2010-05-10 110 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);