DateTimeOffset.ToString()
カルチャに依存しないパラメーターなしのメソッドに依存することはできません。ラウンドトリップ形式指定子 ("O"
または"o"
) を使用して、タイムゾーン情報を保持しながら、ISO 8601 標準に従って (すべてのカルチャで正しく解析されるように) 日付を明確に書式設定することをお勧めします。
MSDN から:
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
DateTimeOffset dateOffset = new DateTimeOffset(date1,
TimeZoneInfo.Local.GetUtcOffset(date1));
Console.WriteLine(dateOffset.ToString("o"));
// Displays 2008-04-10T06:30:00.0000000-07:00
timeagoのWeb サイトは、ISO 8601 をサポートしていることを示しているようです。
編集:"o"
フォーマット指定子は、次のカスタム フォーマット文字列と同等です。
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz"
精度をミリ秒に制限したい場合は、次のように調整できます。
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
DateTimeOffset dateOffset = new DateTimeOffset(date1, new TimeSpan(-7, 0, 0));
Console.WriteLine(dateOffset.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffzzz"));
// Displays 2008-04-10T06:30:00.000-07:00