簡體   English   中英

如何統一各種DateTime格式?

[英]How to Unify Various DateTime Format?

我需要接受文本文件中的DateTimeDate信息。 挑戰在於,此日期信息每次都以任何格式出現。 它可以是以下任何格式。

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.

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