将未知格式的日期字符串转换为日期时间 c#
本文关键字:日期 时间 转换 字符串 格式 未知 | 更新日期: 2024-11-08 05:11:27
我不知道日期时间的格式,因为网页有多种语言,并且可以使用多种日期时间格式。我不得不将日期选择器UI中的波兰日期格式更改为d.m.yyyyy,尽管ISO标准是YYYY-mm-dd。.NET 使用 ISO 标准,但每当我尝试使用 Convert.ToDateTime(stringDate)
时,我都会收到异常String is not recognized as valid DateTime
。我尝试使用 Convert.ToDateTime(stringDate,CultureInfo.InvariantCulture)
但它没有帮助。如何成功转换为日期时间?
例: item.arrival
是字符串,可以采用 10 多种格式。 Convert.ToDateTime
对他们都有效。但: 波兰语的日期格式不再item.arrival
yyyy-mm-dd
(因为我需要更改它),因此Convert.ToDateTime
不再仅适用于波兰语。新格式13.06.2015.
因此,由于格式不是波兰语言的 ISO 标准,因此 .NET 无法进行转换。我希望现在更清楚了。 ArrivalDate = Convert.ToDateTime(item.arrival, CultureInfo.InvariantCulture),
我不得不将日期选择器 UI 中的波兰日期格式更改为 d.m.yyyy ... 示例:item.arrival 是字符串,可以采用 10 多种格式。Convert.ToDateTime适用于所有人。但是:波兰语的 item.到达日期格式不再是 yyyy-mm-dd(因为我需要更改它)
根据你所说的,你的日期时间转换适用于除波兰语以外的所有语言,并且你(在你的代码中)知道它什么时候是波兰语。 因此,使用您需要使用的格式处理波兰语特殊,并正常处理其他九种。
这就是我所做的。我把它放在一些PageBase类中,所以它应该比项目周围的一些"if-poland-date"语句更通用,更不容易出错。
CultureInfo newCulture = (CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture;
if (newCulture.TwoLetterISOLanguageName == "pl")
{
DateTimeFormatInfo myDTFI = new CultureInfo("hr-HR", false).DateTimeFormat;
newCulture.DateTimeFormat = myDTFI;
CultureInfo ci = new CultureInfo("pl-PL");
DateTimeFormatInfo dateformat = new DateTimeFormatInfo();
ci.DateTimeFormat = myDTFI;
CultureAndRegionInfoBuilder obj = new CultureAndRegionInfoBuilder("pl-PL", CultureAndRegionModifiers.Replacement);
obj.LoadDataFromCultureInfo(ci);
CultureAndRegionInfoBuilder.Unregister("pl-PL");
obj.Register();
}