簡體   English   中英

將克羅地亞語日期字符串解析為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不被識別為有效的dateTime字符串。

我想在沒有字符串解析的情況下解決這個問題,例如:在年后刪除點。

"d"標准格式說明符使用提供的文化的ShortDatePattern 由於您使用DateTime.ParseExact ,格式和字符串應完全匹配。

hr-HR文化的ShortDatePattern模式是dMyyyy. 這顯然與你的字符串不符。 它也與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文化"G"標准格式說明符 ,它基於ShortDatePatternLongTimePattern屬性的組合作為dMyyyy. H:mm:ss dMyyyy. H:mm:ss

您應該使用G作為格式說明符。 “G”標准格式說明符表示由空格分隔的短日期(“d”)和長時間(“T”)模式的組合。

更多信息在這里

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 (例如出於性能原因 ),可以使用以下(等效)語句之一:

DateTime parsed = DateTime.ParseExact(date, "d.M.yyyy. HH:mm:ss", ci);

要么

DateTime parsed = DateTime.ParseExact(date, "G", ci);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM