gpt4 book ai didi

c# - DateTime.Parse 似乎忽略了文化

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:38 26 4
gpt4 key购买 nike

所以我将 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

我用更多示例制作了一个 rextester,可以更好地说明问题:http://rextester.com/XNBV97545

即使我将 CurrentCulture 添加到 Parse 函数中,结果也是一样的。关于如何解决这个问题有什么建议吗?

最佳答案

当您第一次使用 ToString 时,您会失去精度。您需要使用大写字母 H,因为您失去了 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")).Hour);

或者,您可以将文化指定为 CultureInfo.InvariantCulture 以保持上午/下午,而不管当前的文化设置如何。

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);

关于c# - DateTime.Parse 似乎忽略了文化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45986451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com