[英]C# DateTime.Parse efficiently time with hour/min/sec/milis/micro/nano seconds
從第三方,我得到了要轉換為DateTime的字符串: “ 13 NOV 2018 16:08:52:000:000:000”我嘗試了這些選項,但拋出了FormatException
:
System.DateTime.ParseExact("12 NOV 2018 16:08:52:000:000:000",
"dd MMM yyyy HH:mm:ss:fff:ffffff:fffffffff",
CultureInfo.InvariantCulture)
和當我使用這個相同的例外:
System.DateTime.ParseExact("12 NOV 2018 16:08:52:000:000:000",
"dd MMM yyyy HH:mm:ss:fff", CultureInfo.InvariantCulture)
有沒有一種干凈的方法可以按原樣解析它,或者我需要使用諸如string.Split(new []{':'})
這樣的骯臟方法?
注意:
更新資料
我選擇了@Tim的建議來進行字符串操作:
string date = "12 NOV 2018 16:08:52:000:000:000";
date = date.Remove(date.Remove(date.LastIndexOf(':')).LastIndexOf(':'));
DateTime result = System.DateTime.ParseExact(date, "dd MMM yyyy HH:mm:ss:fff", System.Globalization.CultureInfo.InvariantCulture);
原因:
date
字符串的結構,因為它來自第三方。 因此,使用格式模式dd MMM yyyy HH:mm:ss:fff:fff:fff
非常危險 DateTime.ParseExact()
時,字符串拆分的使用不是關鍵因素 另外,如果您真的認為效率如此重要,請不要假設對DateTime.ParseExact的任何單個調用都是“快速的”,否則您所做的任何字符串拆分都將成為瓶頸。
好吧,這不就是這個嗎?
System.DateTime.ParseExact("12 NOV 2018 16:08:52:000:000:000",
"dd MMM yyyy HH:mm:ss:fff:fff:fff",
System.Globalization.CultureInfo.InvariantCulture)
如果所有f
組都具有相同的值(例如全0
或123
。
TBH,我不明白您為什么認為fff:ffffff:fffffffff
匹配000:000:000
對於我的業務需求,我不需要微秒級的時間。
您可以通過截斷微/納米部分來使第二種格式起作用:
string date = "12 NOV 2018 16:08:52:000:000:000";
date = date.Remove(date.Remove(date.LastIndexOf(':')).LastIndexOf(':'));
DateTime result = System.DateTime.ParseExact(date, "dd MMM yyyy HH:mm:ss:fff", System.Globalization.CultureInfo.InvariantCulture);
當然,這假定始終至少有兩個冒號。 顯然,您需要try-catch
才能記錄無效值並繼續下一個值。
沒有確切答案
System.DateTime.ParseExact("25 NOV 2018 16:08:52:000:000:000",
"dd MMM yyyy HH:mm:ss:fff:fff:fff", CultureInfo.InvariantCulture);
注意事項:輸入字符串(000)的計數應與format(fff)匹配,
000 =好
00 = fff不好
000 = ff不好
在嘗試解析之前,您可能需要操縱輸入日期字符串。
有關使用格式說明符(fff)的更多信息,請參見此內容。
https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/custom-date-and-time-format-strings
.NET小提琴:
我認為:fff具有相同的格式是這里的關鍵因素
System.DateTime.ParseExact("12 NOV 2018 16:08:52:000:000:000","dd MMM yyyy H:mm:ss:fff:fff:fff", CultureInfo.InvariantCulture)
似乎可以正常工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.