今日の日付からユーザー指定の日数を差し引いて何かを書き出すコードがあります。dd-mm-yyyy 形式を使用しました。テスト中、mm-dd-yyyy 形式のマシンでは、日ではなく月が差し引かれました。次のようになります。
DateTime Date1 = DateTime.Now.Subtract(new TimeSpan(days, 0, 0, 0));
コンピューターの日時形式をどのように読み取り、形式が私たちのものと異なる場合に減算を変更できますか。
ありがとう。
このコードは、実行中のマシンの書式設定を取得する方法を示しており、日付を操作するときに気にする必要がなく、出力するときに気にする必要がないことを示しています。
そして... http://xkcd.com/1179/
int days = 1;
DateTime n = DateTime.Now;
Console.WriteLine( "Now using a fixed known format for tests");
Console.WriteLine( "{0:yyyy MM dd}" , n);
Console.WriteLine();
DateTime Date1 = n.Subtract(new TimeSpan(days, 0, 0, 0));
Date1.Dump();
DateTimeFormatInfo dtfi = CultureInfo.CurrentUICulture.DateTimeFormat;
Console.WriteLine("machines short date pattern");
Console.WriteLine( dtfi.ShortDatePattern );
Console.WriteLine("{0:d}" , Date1);
Console.WriteLine();
Console.WriteLine("machines long date pattern");
Console.WriteLine( dtfi.LongDatePattern );
Console.WriteLine("{0:D}" , Date1);
私のマシンでの出力:
Now using a fixed known format for tests
2013 08 07
06/08/2013 10:05:06
machines short date pattern
M/d/yyyy
06/08/2013
machines long date pattern
dddd, MMMM dd, yyyy
06 August 2013