将克罗地亚日期字符串解析为 DateTime

Posted

技术标签:

【中文标题】将克罗地亚日期字符串解析为 DateTime【英文标题】:Parse Croatian Date string into DateTime 【发布时间】:2015-01-23 09:30:22 【问题描述】:

我有来自 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);

它告诉我

字符串未被识别为有效的日期时间字符串。

我想在不解析字符串的情况下解决这个问题,例如:在年后删除点。

【问题讨论】:

【参考方案1】:

The "d" standard format specifier 使用提供的文化的ShortDatePattern。由于您使用DateTime.ParseExact,格式和字符串应该完全匹配

但是hr-HR 文化的ShortDatePattern 模式是d.M.yyyy.,这显然与您的字符串不匹配。它也与InvariantCulture 不匹配。

不过这种格式是hr-HR文化的标准日期时间格式,所以可以直接用DateTime.Parse点赞;

string d = "1.4.2013. 00:00:00";
DateTime parsed = DateTime.Parse(d, CultureInfo.GetCultureInfo("hr-HR"));
// 01/04/2013 00:00:00

您的字符串与hr-HR 文化中的The "G" standard format specifier 匹配,该文化基于ShortDatePatternLongTimePattern 属性的组合为d.M.yyyy. H:mm:ss

【讨论】:

DateTime.ParseExact(d, "d.M.yyyy. HH:mm:ss", CultureInfo.InvariantCulture) 解决了我的问题,但是您的答案是正确的,但是在 DotNet 3.5 中我看不到 (dot) 。 hr-HR CultureInfo 一年后。还是谢谢!【参考方案2】:

您应该使用G 作为格式说明符。 “G”标准格式说明符表示短日期(“d”)和长时间(“T”)模式的组合,用空格分隔。

更多信息here

string d = "1.4.2013. 00:00:00";
DateTime parsed = DateTime.ParseExact(d, "G",new CultureInfo("hr-HR"));

【讨论】:

【参考方案3】:

以下应该有效:

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

【讨论】:

以上是关于将克罗地亚日期字符串解析为 DateTime的主要内容,如果未能解决你的问题,请参考以下文章

python模块datetime将字符串转换为日期

python 如何将字符串转化为datetime.date

DateTime.Parse 美国日期格式 C#

可以将字符串日期转换为mysql DateTime吗?

Dart - 将字符串日期格式化为日期时间

什么是 Vaex 函数将字符串解析为 datetime64,相当于 pandas to_datetime,允许自定义格式?