我正在尝试这种DateTime.TryParseExact
方法,但我遇到了一个我没有得到的案例。我有一些格式和一些主题要解析,每个都应该完美匹配其中一种格式:
var formats = new[]
{
"%H",
"HH",
"Hmm",
"HHmm",
"Hmmss",
"HHmmss",
};
var subjects = new[]
{
"1",
"12",
"123",
"1234",
"12345",
"123456",
};
然后我尝试解析它们并打印出结果:
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));
}
我得到以下信息:
1 : 01:00:00
12 : 12:00:00
123 : 00:00:00
1234 : 12:34:00
12345 : 00:00:00
123456 : 12:34:56
对于我的问题......为什么它在 123 和 12345 上失败了?这些不应该变成 01:23:00 和 01:23:45 吗?我在这里想念什么?我怎样才能让它像我期望的那样工作?
更新:所以,似乎我们可能已经弄清楚为什么这会失败。似乎 theH
实际上是抓取两位数,然后只为 留下一个数字,然后mm
会失败。但是,有没有人知道如何更改此代码以便获得所需的结果?
另一个更新:认为我现在找到了一个合理的解决方案。添加它作为答案。将在 2 天内接受它,除非其他人想出更好的。谢谢您的帮助!