我的情况是,我可能会以mmddyyyy
格式或yyyymmdd
格式获得日期。现在我需要以yyyy-mm-dd
格式转换任何收到的日期。
之前我只是以yyyymmdd
的形式获取日期,所以我正在使用
Value = DateTime.ParseExact(dob, "yyyy-MM-dd",null)
获得了所需的结果。
现在我还需要检查日期的传入格式。 有没有一种简单的方法可以做到这一点,还是我需要放一个if else并手动检查所有内容?
答案 0 :(得分: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
}
答案 1 :(得分: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");