2014-05-08 65 views
2

我需要知道確切的日期格式,將持續字符串16-Aug-78 12:00:00 AM。我已經嘗試過各種字符串,如「ss-MMM-yy hh:mm:ss」。有什麼辦法可以找到它轉換爲任何通用格式。我正在使用CultureInfo.InvariantCulture類。如何查找日期字符串的確切格式?

回答

2

您的字符串格式不正確。它必須與您的字符串格式完全匹配。您可以改用dd-MMM-yy hh:mm:ss tt格式。

這裏是LINQPad的一個例子。

string s = "16-Aug-78 12:00:00 AM"; 
var date = DateTime.ParseExact(s, "dd-MMM-yy hh:mm:ss tt", 
           CultureInfo.InvariantCulture); 
date.Dump(); 

或者,由於dd-MMM-yy hh:mm:ss ttInvariantCulture一個非標準的日期和時間格式,可以直接DateTime.Parse方法等;

string s = "16-Aug-78 12:00:00 AM"; 
var date = DateTime.Parse(s, CultureInfo.InvariantCulture); 
date.Dump(); 

這裏一個demonstration

有沒有辦法找到它轉換爲任何一般格式?

除了創建自己的格式之外,沒有辦法獲取字符串的格式。只有你可以確切地知道你的字符串格式是什麼,電腦不能。

例如; 01/02/2014可以是2014年2月1日2014年1月2日取決於您可以解析它的自定義格式。

+0

謝謝。它幫助了我。但是有可能嘗試使用幾種優先格式,然後嘗試使用哪種格式來獲得確切的價值。我已經通過嵌套try catch來完成它。有沒有更好的方法。 我注意到我的格式是錯誤的。 – pcbabu

+1

@pcbabu不客氣。 'DateTime.TryParseExact'方法[有一個重載](http://msdn.microsoft.com/en-us/library/h9b85w22%28v=vs.110%29.aspx),它將格式視爲_string array_。這意味着您可以在您的方法中提供多個字符串格式。如果你的字符串匹配你的一種格式,這個方法返回'true'。 –

1

你有錯誤的格式字符串,你使用ss的一天它應該是dd。這篇文章Custom Date and Time Format Strings解釋了您需要的自定義格式。

使用

"dd-MMM-yy hh:mm:ss tt" 

而不是

"ss-MMM-yy hh:mm:ss" 

您可以使用DateTime.ParseExact解析字符串。

DateTime dt = DateTime.ParseExact("16-Aug-78 12:00:00 AM", "dd-MMM-yy hh:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None); 
0

嘗試如下

var dstring = "16-Aug-78 12:00:00 AM"; 
DateTime result; 
var matchingCulture = CultureInfo.GetCultures(CultureTypes.AllCultures).FirstOrDefault(ci => DateTime.TryParse(dstring, ci, DateTimeStyles.None, out result)) 
0

您可以DateTime.TryParseExact()嘗試:

string strDate = "16-Aug-78 12:00:00 AM";   
DateTime datDate; 
if(DateTime.TryParseExact(strDate , new string[] {"dd-MMM-yy hh:mm:ss tt" }, 
         System.Globalization.CultureInfo.InvariantCulture, 
         System.Globalization.DateTimeStyles.None, out datDate)) 
{ 
    Console.WriteLine(datDate); 
} 

else 
{ 
    Console.WriteLine("Error in datetime format"); 
} 
相關問題