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

时间:2008-09-23 19:34:05

标签: c# .net

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

6 个答案:

答案 0 :(得分:29)

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文档中的详细信息。

答案 1 :(得分:3)

答案 2 :(得分:3)

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

e.g。

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

我希望我帮助你。

答案 3 :(得分:0)

你也可以做Convert.ToDateTime

不确定两者的优点

答案 4 :(得分:0)

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

...问候

答案 5 :(得分: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
}