我有一个格式如下的字符串yyyyMMdd
,我试图让它看起来像这样:
yyyy-MM-dd
当我尝试时:
string date = "20121004";
Convert.ToDateTime(date).ToString("yyyy-MM-dd");
我得到错误:
FormatException:字符串未被识别为有效的 DateTime。
下面的方法是否有效,或者我会遇到问题吗:
private string GetValidDate(string date,string format)
{
DateTime result;
if(DateTime.TryParseExact(date, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
{
return date;
}
else if(DateTime.TryParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
{
return DateTime.ParseExact(date, "yyyyMMdd",
CultureInfo.InvariantCulture).ToString("yyyy-MM-dd");
}
else
{
return "Invalid Date Format";
}
}
最佳答案
只需使用DateTime.ParseExact
方法:
string date = "20121004";
string result = DateTime.ParseExact(date, "yyyyMMdd",
CultureInfo.InvariantCulture).ToString("yyyy-MM-dd");
这还提供了在使用连字符重新格式化日期之前验证日期的优势。如果日期不在有效范围内或格式不匹配,ParseExact
会抛出一个您可以捕获的异常。
关于c# - 将 20121004 (yyyyMMdd) 转换为有效的日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11053887/