2010-05-10 104 views
1

我有一個字符串12012009在ASP.NET MVC應用程序中由用戶輸入。我想將其轉換爲DateTime到日期時間的字符串

但是,如果我做DateTime.TryParse("12012009", out outDateTime);它返回一個false。

於是,我就12012009轉換爲12/01/2009,然後做 DateTime.TryParse("12/01/2009", out outDateTime);將工作

但我沒有找到任何直接的方法,以字符串12012009轉換爲字符串「12/01/2009 」。有任何想法嗎?

+0

單個數字的月份總是以零爲前綴嗎?例如,可能總是05,或者它可能只是5?如果始終用0填充,則非常簡單,如果不是,則幾乎不可能。 – Serapth 2010-05-10 18:49:42

+0

日期將始終填充0 – SARAVAN 2010-05-10 19:10:57

回答

4

您可以使用DateTime.TryParseExact並傳遞正確的格式字符串:

DateTime dateValue = DateTime.Now; 
if (DateTime.TryParseExact("12012009", "ddMMyyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateValue))) 
{ 
    // Date now in dateValue 
} 
+1

'mm'是*分鐘*的格式說明符。 http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx – dtb 2010-05-10 18:59:09

+0

@dtb - 感謝您的收穫! – Oded 2010-05-10 19:05:37

9

首先,你需要決定是否你的輸入是天 - 月 - 年個月 - 日 - 年格式。

然後你可以使用DateTime.TryParseExact並明確指定輸入字符串的格式:

DateTime.TryParseExact("12012009", 
         "ddMMyyyy", 
         CultureInfo.InvariantCulture, 
         DateTimeStyles.None, 
         out convertedDate) 

參見:Custom Date and Time Format Strings

+0

+1擊敗了我.... :-) – 2010-05-10 18:50:31

+0

這是答案,但它取決於以0爲前綴的單位數字月/天。如果1212009是可能的輸入,那麼您已被洗淨。 – Serapth 2010-05-10 18:52:01

+0

謝謝。輸入一定是mmddyyyy格式。所以我認爲我很安全。 – SARAVAN 2010-05-10 19:09:44

0

如果你想使用的格式,你很可能需要以指定格式到解析器。檢查System.IFormatProvider文檔以及帶有IFormatProvider的方法的System.DateTime文檔。

0
DateTime yourDate = 
    DateTime.ParseExact(yourString, "ddMMyyyy", Culture.InvariantCulture);