2010-02-24 127 views
4

我有一个这样的字符串:字符串转换为DateTime

"20090212" 

,我要转换为有效的C#日期时间。

我需要解析它,因为这似乎太多的工作?

+0

最快的手指第一......这是一个令人惊讶的,有用的问题(我要寻找我自己的代码,当我做了回答),但会在第一分钟内的少数答案... – Unsliced 2010-02-24 14:52:59

+1

完全重复:http://stackoverflow.com/questions/2188585/convert-string-to-date-in-c/21​​88593#2188593 – 2010-02-24 14:53:39

+0

@Dynami它从来没有来过在搜索结果中。 – 2010-02-24 21:12:50

回答

13

您可以使用DateTime.ParseExact

DateTime result = 
    DateTime.ParseExact("20090212", "yyyyMMdd", CultureInfo.InvariantCulture); 
+0

感谢您的回答!它工作顺利:) – 2010-02-24 14:54:44

+0

不错的提示,一定会派上用场 – mattythomas2000 2010-02-24 15:05:43

4

看看DateTime.TryParseExact方法(MSDN)。我更喜欢TryParseExact方法到ParseExact方法,因为它返回一个布尔值,告诉你转换是否成功,而不是抛出异常,但任何一个都可以工作。

2
DateTime.ParseExact(str, "yyyyMMdd", CultureInfo.CurrentCulture); 

...我真的怀疑我到了那里第一。

虽然完整,我更喜欢TryParseExact

DateTime dt; 
if(DateTime.TryParseExact(str, "yyyyMMdd", CultureInfo.CurrentCulture, DateTimeStyles.None, out dt)) { 
    // ... use the variable dt 
} 
+0

一般来说,当您知道所有输入字符串都将采用特定格式时,使用'CultureInfo.InvariantCulture'会更安全。有时格式代码在不同语言环境下的解释不同。 – Brian 2010-02-24 14:56:15