到现在为止,我认为我会理解DateTime.ParseExact它是如何工作的,但这令人困惑.为什么以下行返回false?
DateTime.TryParseExact("2013122", "yyyyMdd", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out lastUpdate)
Run Code Online (Sandbox Code Playgroud)
月份也可以有两位数.在我看来,它应该能够理解它意味着2013年1月22日.为什么我走错了路?我错过了什么或者有一个简单的解决方法吗?
同时我正在使用这种不太优雅的解决方法,但有效:
public static DateTime? ParseDate_yyyyMdd(String date)
{
if (date == null)
return null;
date = date.Trim();
if (date.Length < 7)
return null;
if (date.Length == 7)
date = date.Insert(4, "0");
DateTime dt;
if (DateTime.TryParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dt))
return dt;
return null;
}
Run Code Online (Sandbox Code Playgroud)
给出了我想要的结果:
DateTime? date = ParseDate_yyyyMdd("2013122");
Console.Write(date.ToString()); // 01/22/2013
Run Code Online (Sandbox Code Playgroud)
但是,我仍然对这种限制的原因感兴趣.也许有人也有更好的方法.