将字符串转换为.net中的日期.net


8

我正在阅读c#中的平面文件中的文本,并且需要测试某些值是否为日期。它们可以是YYYYMMDD格式或MM/DD/YY格式。 .Net中最简单的方法是什么?

26
string[] formats = {"yyyyMMdd", "MM/dd/yy"}; 
var Result = DateTime.ParseExact(input, formats, CultureInfo.CurrentCulture, DateTimeStyles.None); 

DateTime result; 
string[] formats = {"yyyyMMdd", "MM/dd/yy"}; 
DateTime.TryParseExact(input, formats, CultureInfo.CurrentCulture, DateTimeStyles.None, out result); 

更多MSDN文档中的信息上ParseExactTryParseExact

  0

这比我的好。不知道你可以为格式做一个字符串数组。非常好! 23 9月. 082008-09-23 19:42:00

  0

更好!正是我需要的。 23 9月. 082008-09-23 19:57:04

  0

请确保您检查DateTime.TryParseExact(...)的返回值,因为这将是唯一可以判断它是否成功的方法。 24 9月. 082008-09-24 00:11:22


3

DateTime.TryParse方法

  0

由于我无法编辑您的答案,我认为这可能有助于提供该方法的MSDN文章的链接。 http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx 23 9月. 082008-09-23 19:39:50

  0

[@Yadyn]:我觉得intellisense就足够了,但是确定我加入了一个彻底的链接 - 谢谢! 25 9月. 082008-09-25 18:38:24


0

你也可以做Convert.ToDateTime

不能肯定任


0

使用,如果它失败的TryParse不会抛出异常的优点。另外,TryParse将返回True/False,表示转换成功。

Regards ...


3

你也可以尝试TryParseExact设置确切的格式。 方法,这里的文档:http://msdn.microsoft.com/en-us/library/ms131044.aspx

例如,

DateTime outDt; 
bool blnYYYMMDD = 
    DateTime.TryParseExact(yourString,"yyyyMMdd" 
          ,CultureInfo.CurrentCulture,DateTimeStyles.None 
          , out outDt); 

我希望我能帮到你。

  0

伙计!这非常有用,我在这之前失去了将近一个小时,尽管我知道我已经在某个地方完成了它。 31 3月. 092009-03-31 08:46:31


0

您可以使用TryParse方法同时检查有效性和解析。

DateTime output; 
string input = "09/23/2008"; 
if (DateTime.TryParseExact(input,"MM/dd/yy", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out output) || DateTime.TryParseExact(input,"yyyyMMdd", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out output)) 
{ 
    //handle valid date 
} 
else 
{ 
    //handle invalid date 
}