私が使用しているので、DateTime.ToString()
そしてDateTime.Parse()
、いくつかの異なる文化を持ちます。私はこれに出くわしました:
DateTime date = new DateTime(2017, 8, 30);
CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("de-DE");
Console.WriteLine(DateTime.Parse(date.ToString("MMM d, yyyy h:mm tt")).Hour);
CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
Console.WriteLine(DateTime.Parse(date.ToString("MMM d, yyyy h:mm tt")).Hour);
結果は次のとおりです。
12
0
問題をよりよく示すいくつかの例を使用してレクステスターを作成しました:http://rextester.com/XNBV97545
CurrentCulture
解析関数にを追加しても、結果は同じです。これを回避する方法について何か提案はありますか?
を最初に使用すると、精度が失われますToString
。AM / PMが失われるため、大文字のHを使用する必要があります。
DateTime date = new DateTime(2017, 8, 30);
CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("de-DE");
Console.WriteLine(DateTime.Parse(date.ToString("MMM d, yyyy H:mm tt")).Hour);
またはCultureInfo.InvariantCulture
、現在のカルチャ設定に関係なく、AM / PMを維持するようにカルチャを指定できます。
DateTime date = new DateTime(2017, 8, 30);
CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("de-DE");
Console.WriteLine(DateTime.Parse(date.ToString("MMM d, yyyy h:mm tt", CultureInfo.InvariantCulture)).Hour);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加