gpt4 book ai didi

.NET 4.5 DateTime 格式/转换错误与上索布文化

转载 作者:行者123 更新时间:2023-12-04 12:59:21 27 4
gpt4 key购买 nike

使用上索布语文化 (hsb) 转换为字符串的 DateTime 对象使用格式“d. M. yyyy H.mm.ss 'hodź.'”。例如,ToString("G") 返回“31. 12. 2011 5.06.07 hodź”。 2011 年 12 月 31 日上午 05:06:07。

问题是尽管尝试将这样的字符串转换回 DateTime 不会导致结果为真。更简单的字符串,如“1. 1. 2011”或“1.1.2011”也不会成功。以防万一有人建议在转换/持久化时传递文化:我当然这样做了。

尝试解析“1.2.3”会导致当前日期为 01:02:03。

我认为这是一个错误。或者有人知道可能出了什么问题吗?

我在 Windows 8 RTM 机器上使用 .NET 4.5 RTM。

样本:

DateTime date = DateTime.Now;

CultureInfo culture = new CultureInfo("hsb");
string dateString = date.ToString("G", culture);
DateTime convertedDate;

bool dateOkay = DateTime.TryParse(dateString, culture,
DateTimeStyles.AllowInnerWhite, out convertedDate);
Console.WriteLine(dateOkay);
// This results false although the date string was read by
// ToString("G") (i.e. '20. 9. 2012 12.28.10 hodź.') and should be okay

dateString = "1. 1. 2000";
dateOkay = DateTime.TryParse(dateString, culture,
DateTimeStyles.AllowInnerWhite, out convertedDate);
Console.WriteLine(dateOkay);
// This results in false although the date string should be okay

dateString = "1.1.2000";
dateOkay = DateTime.TryParse(dateString, culture,
DateTimeStyles.AllowInnerWhite, out convertedDate);
Console.WriteLine(dateOkay);
// This results also in false

dateString = "1.2.3";
dateOkay = DateTime.TryParse(dateString, culture,
DateTimeStyles.AllowInnerWhite, out convertedDate);
Console.WriteLine(dateOkay + ": " + convertedDate);
// This results strangely in true. The converted date is the current date
// with time 01:02:03.

最佳答案

在 .Net 4.5 中,“hsb”被标记为中性文化,因此所有 DateTime 解析都将由标准格式提供程序完成。请改用带有格式字符串的 DateTime.ParseExact。
http://www.codeproject.com/Articles/3612/Use-of-different-Date-Time-formats-and-Culture-typ

================================

我发现当 CultureInfo 中的标志“IsNeutralCulture”等于“true”时,日期字符串以不变格式解析(en-US)。当我通过格式 MM/dd/yyyy DateTime.TryParse 为文化“hsb”正确解析日期时。

以及我提供的文章中的一些引用:“只能为不变文化或特定文化创建 DateTimeFormatInfo,不能为中性文化创建。DateTimeFormatInfo 继承自 Object 并实现 ICloneable 和 IFormarProvider 接口(interface)。”

我发现 DateTimeFormatInfo 是为“hsb”文化指定的,但正如我之前所说,IsNeutralCulture = true。当“IsNeutralCulture”等于“true”时,我希望.Net framework 4.5 DateTimeFormatInfo 不用于解析日期

关于.NET 4.5 DateTime 格式/转换错误与上索布文化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12482772/

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