相关疑难解决方法(0)

.NET:为什么TryParseExact在Hmm和Hmmss上失败?

我正在尝试这种DateTime.TryParseExact方法,而且我遇到了一个我不明白的案例.我有一些格式和一些主题要解析每个格式应完全匹配其中一种格式:

var formats = new[]
     {
         "%H",
         "HH",
         "Hmm",
         "HHmm",
         "Hmmss",
         "HHmmss",
     };

var subjects = new[]
     {
         "1",
         "12",
         "123",
         "1234",
         "12345",
         "123456",
     };
Run Code Online (Sandbox Code Playgroud)

然后我尝试解析它们并打印出结果:

foreach(var subject in subjects)
{
    DateTime result;
    DateTime.TryParseExact(subject, formats, 
        CultureInfo.InvariantCulture, 
        DateTimeStyles.NoCurrentDateDefault,
        out result);

    Console.WriteLine("{0,-6} : {1}", 
        subject,
        result.ToString("T", CultureInfo.InvariantCulture));
}
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

1      : 01:00:00
12     : 12:00:00
123    : 00:00:00
1234   : 12:34:00
12345  : 00:00:00
123456 : 12:34:56
Run Code Online (Sandbox Code Playgroud)

而我的问题是......为什么它在123和12345失败了?不应该成为01:23:00和01:23:45吗?我在这里错过了什么?我怎么能像我期望的那样让它工作?


更新:所以,似乎我们可能已经弄清楚为什么这是失败的.似乎H实际上抓住两个数字,然后只留下一个数字,mm然后失败.但是,有没有人对如何更改此代码有一个好主意,以便我得到我想要的结果?

另一个更新:想想我现在找到了一个合理的解决方案.添加它作为答案.将在2天内接受它,除非其他人想出更好的一个.谢谢您的帮助!

.net c# datetime parsing datetime-format

11
推荐指数
1
解决办法
2334
查看次数

标签 统计

.net ×1

c# ×1

datetime ×1

datetime-format ×1

parsing ×1