在.NET中将字符串转换为日期

9

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

6个回答

30
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);

有关 ParseExactTryParseExact 的更多信息,请参阅 MSDN 文档。


这比我的好。我不知道你可以用字符串数组来格式化。非常棒! - John Sheehan
更好了!正是我所需要的。 - JoshL
请确保检查 DateTime.TryParseExact(...) 的返回值,因为那是您能判断它是否成功的唯一方式。 - Adrian Clark

4

由于我无法编辑您的答案,因此提供该方法的MSDN文章链接可能会有所帮助。http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx - Sean Hanley
[@Yadyn]:我以为智能感知足够了,但好吧,我添加了链接以确保全面 - 谢谢! - Steven A. Lowe

4

您可以尝试使用TryParseExact方法来设置精确格式。

这里是相关文档:http://msdn.microsoft.com/en-us/library/ms131044.aspx

例如:

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

I hope i help you.


哥们!这太有用了,我在这上面浪费了将近一个小时,尽管我知道我以前在某个地方做过这件事。 - NeedHack

0

你也可以使用 Convert.ToDateTime

不确定两者之间的优劣


0

使用TryParse在转换失败时不会抛出异常。此外,TryParse将返回True/False,指示转换的成功与否。

敬礼...


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
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接