0

我有一种情况,我可能会得到mmddyyyy格式或yyyymmdd格式的日期。现在我需要将任何接收到的日期转换为yyyy-mm-dd格式。早些时候我只在表格中获取日期,yyyymmdd所以我使用

Value = DateTime.ParseExact(dob, "yyyy-MM-dd",null)

并得到了所需的结果。

现在我还需要检查日期的传入格式。有没有一种简单的方法可以做到这一点,还是我需要输入 if else 并手动检查所有内容?

4

2 回答 2

7

您可以使用TryParseExact允许您传递您想要支持的可能格式的集合的方法。

DateTime dateValue;
var formats = new[] { "MM-dd-yyyy", "yyyy-MM-dd" };
if (DateTime.TryParseExact(dob, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateValue))
{
    // do for valid date
}
else
{
    // do for invalid date
}
于 2013-05-23T06:21:29.547 回答
2

您可以尝试使用第一种格式解析日期。如果解析不成功,则使用其他格式解析:

你应该这样做:

//example date
string dateString= "09301986";

//output date
DateTime finalDate;        

if (!DateTime.TryParseExact(dateString, "ddMMyyyy", CultureInfo.InvariantCulture,  DateTimeStyles.None, out finalDate))
{
   DateTime.TryParseExact(dateString, "yyyyMMdd", CultureInfo.InvariantCulture,
   DateTimeStyles.None, out finalDate);

}

string finaldate = finalDate.ToString("yyyy-MM-dd");
于 2013-05-23T06:15:57.920 回答