将克罗地亚语日期字符串解析为 DateTime
Parse Croatian Date string into DateTime
我有来自 WebService "1.4.2013. 0:00:00"
的以下字符串。
我想从 string
中获取 DateTime
对象。
到目前为止我尝试了什么:
string d = "1.4.2013. 00:00:00";
DateTime parsed = DateTime.ParseExact(d, "d",CultureInfo.CreateSpecificCulture("hr-HR"));
DateTime parsed = DateTime.ParseExact(d, "d",new CultureInfo("hr-HR"));
DateTime parsed = DateTime.ParseExact(d, "d", CultureInfo.InvariantCulture);
它告诉我
string is not recognized as valid dateTime string.
我想在不进行字符串解析的情况下解决这个问题,例如:删除年份后的点。
The "d"
standard format specifier uses ShortDatePattern
提供的文化。由于您使用 DateTime.ParseExact
,格式和字符串应该 完全匹配 .
但是hr-HR
文化ShortDatePattern
pattern is d.M.yyyy.
and this clearly doesn't match with your string. It doesn't match with InvariantCulture
也一样。
不过,这种格式是hr-HR
文化的标准日期和时间格式,所以你可以直接使用DateTime.Parse
like;
string d = "1.4.2013. 00:00:00";
DateTime parsed = DateTime.Parse(d, CultureInfo.GetCultureInfo("hr-HR"));
// 01/04/2013 00:00:00
您的字符串与 The "G"
standard format specifier of hr-HR
culture which based on combination of ShortDatePattern
and LongTimePattern
属性匹配 d.M.yyyy. H:mm:ss
。
您应该使用 G
作为格式说明符。 "G" 标准格式说明符表示短日期 ("d") 和长时间 ("T") 模式的组合,由 space.
分隔
更多信息here
string d = "1.4.2013. 00:00:00";
DateTime parsed = DateTime.ParseExact(d, "G",new CultureInfo("hr-HR"));
以下应该有效:
string date = "1.4.2013. 00:00:00";
var ci = CultureInfo.CreateSpecificCulture("hr-HR");
DateTime parsed = DateTime.Parse(date, ci);
正如 Soner 所说,您尝试使用不包含任何时间信息的短日期模式,因此 ParseExact
失败。使用 Parse
让方法确定要使用的格式。
如果您想使用 ParseExact
(例如 performance reasons),您可以使用以下(等效)语句之一:
DateTime parsed = DateTime.ParseExact(date, "d.M.yyyy. HH:mm:ss", ci);
或
DateTime parsed = DateTime.ParseExact(date, "G", ci);
我有来自 WebService "1.4.2013. 0:00:00"
的以下字符串。
我想从 string
中获取 DateTime
对象。
到目前为止我尝试了什么:
string d = "1.4.2013. 00:00:00";
DateTime parsed = DateTime.ParseExact(d, "d",CultureInfo.CreateSpecificCulture("hr-HR"));
DateTime parsed = DateTime.ParseExact(d, "d",new CultureInfo("hr-HR"));
DateTime parsed = DateTime.ParseExact(d, "d", CultureInfo.InvariantCulture);
它告诉我
string is not recognized as valid dateTime string.
我想在不进行字符串解析的情况下解决这个问题,例如:删除年份后的点。
The "d"
standard format specifier uses ShortDatePattern
提供的文化。由于您使用 DateTime.ParseExact
,格式和字符串应该 完全匹配 .
但是hr-HR
文化ShortDatePattern
pattern is d.M.yyyy.
and this clearly doesn't match with your string. It doesn't match with InvariantCulture
也一样。
不过,这种格式是hr-HR
文化的标准日期和时间格式,所以你可以直接使用DateTime.Parse
like;
string d = "1.4.2013. 00:00:00";
DateTime parsed = DateTime.Parse(d, CultureInfo.GetCultureInfo("hr-HR"));
// 01/04/2013 00:00:00
您的字符串与 The "G"
standard format specifier of hr-HR
culture which based on combination of ShortDatePattern
and LongTimePattern
属性匹配 d.M.yyyy. H:mm:ss
。
您应该使用 G
作为格式说明符。 "G" 标准格式说明符表示短日期 ("d") 和长时间 ("T") 模式的组合,由 space.
更多信息here
string d = "1.4.2013. 00:00:00";
DateTime parsed = DateTime.ParseExact(d, "G",new CultureInfo("hr-HR"));
以下应该有效:
string date = "1.4.2013. 00:00:00";
var ci = CultureInfo.CreateSpecificCulture("hr-HR");
DateTime parsed = DateTime.Parse(date, ci);
正如 Soner 所说,您尝试使用不包含任何时间信息的短日期模式,因此 ParseExact
失败。使用 Parse
让方法确定要使用的格式。
如果您想使用 ParseExact
(例如 performance reasons),您可以使用以下(等效)语句之一:
DateTime parsed = DateTime.ParseExact(date, "d.M.yyyy. HH:mm:ss", ci);
或
DateTime parsed = DateTime.ParseExact(date, "G", ci);