簡體   English   中英

將未知格式的字符串轉換為c#中的日期

[英]convert string in unknown format to date in c#

我搜索了stackoverflow的答案,但沒有運氣。 我正在開發一個Windows應用程序,我有一些不同日期格式的字符串,例如。

dd/MM/yyyy
MM/dd/yyyy
MM-dd-yyyy
dd-MM-yyyy
dd/MM/yyyy hh:mm::ss
MM/dd/yyyy hh:mm::ss
etc...

但我需要轉換為通用格式 - dd/MM/yyyy 該應用程序可以在不同文化的任何Windows機器上運行。

這樣做的正確方法是什么?

編輯:還有一件事我可能不知道傳入字符串的格式。

提前致謝。

使用DateTime.ParseExact將不同的模式作為格式。

如果解析后你真的需要使用字符串表示,請使用DateTimeToString方法,使用您感興趣的顯式格式(這樣它就是文化不變的)。 但是保留DateTime更好,因為這與格式無關。

您可以區分使用不同分隔符的那些格式(即“/”vs“ - ”)。 但是你怎么知道10月10日的日期是代表11月10日還是10月11日? 如果一個數字不大於12,那么在不知道確切格式的情況下,沒有可靠的方法可以做到這一點。

正如其他人指出的那樣,如果您確實知道確切的格式,那么您可以使用DateTime.ParseExact

如果您正在使用相同的未知格式處理一些具有大量日期的導入文件,您可以嘗試不同的格式,並希望只有一個不會給出格式錯誤。

或者換句話說:將“日期”分成三個數字,並檢查每個數字的值范圍。 值> 1900將是年。 如果您發現1到31之間的值,那么這些將是幾天。 從1到12的值可能是幾個月,但也可能是幾天。 嘗試並識別每個部分。

最好的方法是向供應商詢問格式的日期。

要在不同的文化上運行這個程序,我認為你應該創建一個函數來識別這種字符串格式的文化,然后使用Datetime.Parse

暫無
暫無

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

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