[英]How to Unify Various DateTime Format?
我需要接受文本文件中的DateTime
或Date
信息。 挑戰在於,此日期信息每次都以任何格式出現。 它可以是以下任何格式。
20160131 23:30:15
31032016 23:30:15
2016/01/31 23:30:15
01/31/2016 23:30:15
31/01/2016 23:30:15
31.01.2016 23:30:15
31/01/2016 23:30
// ... more formats come with '-' separators as well and some similar format
如何將這些隨機格式統一為string
,甚至直接統一為DateTime
? 還是有任何第三方庫可以處理這種情況?
DateTime.Parse
將為您解決幾乎所有這些問題。 試試看! :-)
如果您擔心使用不同的分隔符,請首先使用String.Replace
替換'/'
'-'
和'/'
。
更好的問題是:您如何處理07/04/2016? 您無法確定是7月4日還是4月7日,並且您需要某種反饋來將其設置為另一種方式。
使用TryParseExact
(或ParseExact
)並將所有格式指定為數組string[] formats
string[] formats = { "yyyyMMdd HH:mm:ss", "ddMMyyyy HH:mm:ss",
"yyyy/MM/dd HH:mm:ss", "MM/dd/yyyy HH:mm:ss" }; //and so on, add more
string dtText = "01/31/2016 23:30:15"; //example
DateTime dt;
bool result = DateTime.TryParseExact(dtText, formats, CultureInfo.InvariantCulture,
DateTimeStyles.AssumeLocal, out dt);
一旦有了這個,就可以處理所有指定的 DateTime
格式。
請注意,您不可能統一所有可能的DateTime
格式,因為其中某些是互斥的 :
Given an ambiguous case:
"12-12-2012"
and formats:
"dd-MM-yyyy"
"MM-dd-yyyy"
上面的兩種中只能使用一種格式。
這就是為什么,根據您的需要為每個項目進行自定義很有益。
如果您希望此方法可重用和自定義,則建議您創建一個主文件( .txt
或.xml
),該文件存儲您可能要在項目中使用的所有DateTime
格式。
masterdtformat.txt
"yyyy/MM/dd HH:mm:ss"
"yyyyMMdd HH:mm:ss"
"ddMMyyyy HH:mm:ss"
"MM/dd/yyyy HH:mm:ss"
"dd-MMM-yyyy HH:mm:ss"
//and so on...
然后,無論何時有了項目,您只需要將某些格式從主文件轉換為特定的項目文件。 在項目中,您加載該項目文件以提供所需的所有格式。
projectdtformat.txt
"yyyy/MM/dd HH:mm:ss"
"yyyyMMdd HH:mm:ss"
//suppose you only need two
這樣,無論您一次指定哪種格式,都可以重用。 通過更改項目文件,為給定項目提供有效的DateTime
格式的機制也將非常容易實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.