相关疑难解决方法(0)

DateTime.ParseExact,包含7位数字/一个月或两位数月份

到现在为止,我认为我会理解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)

但是,我仍然对这种限制的原因感兴趣.也许有人也有更好的方法.

.net c# datetime parsing

12
推荐指数
1
解决办法
4102
查看次数

标签 统计

.net ×1

c# ×1

datetime ×1

parsing ×1