私はこの問題に簡単な答えがあると思います。基本的に私は、本質的に '9062017'であるデータベースからDateTimeを10進数で格納しています。私は小数点以下の拡張メソッドを作成して、小数点および解析を説明し、拡張可能なDateTimeの可変フォーマットを作成したいと考えていました。私はロジックで遊んでいましたが、それは動作しません。私はこのようにSOの上にいくつかのスレッドを探していた:Parse datetime in multiple formats。しかし、それは私が働いていると思うものを説明するものではありません。先頭のゼロを取り除いた複数の日付形式のDecimal to DateTimeの解析?
static void Main(string[] args)
{
DateTime d = new DateTime(2017, 9, 6);
//Cool what I would expect to show the day position with two digits and the month uses one if needed else it will go to two if needed.
Console.WriteLine(d.ToString("Mddyyyy"));
//I can parse out an int and see it is exactly as above.
int i = Int32.Parse(d.ToString("Mddyyyy"));
Console.WriteLine(i.ToString());
DateTime dt;
string[] formats = { "Mddyyyy", "MMddyyyy" };
//Keeps default min value of DateTime and ignores parsing regardless of formats done in the first arg changes, the seconds formats to apply, or cultural changes.
DateTime.TryParseExact(i.ToString(), formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);
Console.WriteLine(dt);
//Console.WriteLine(i);
Console.ReadLine();
}
を、私は**非常に強く**そのように日時を格納に対してお勧めします - * particuarly *月/日/年でこれはソートできません。もしあなたが本当にそれをやりたいのであれば、文字列部分を完全に取り除くことができます - すべての作業を整数で直接行います。 –
@JonSkeet私は同意します。残念ながら、それは最終的に私はちょうどそれを取得し、より良い形をしようとしている自分のコードベースを維持していないサードパーティです。 – djangojazz
10進数の日付がパックされている可能性があります。以下を参照してください。https://www.ibm.com/support/knowledgecenter/en/SS6SGM_3.1.0/com.ibm.aix.cbl.doc/PGandLR/concepts/cpari09.htm – jdweng