【发布时间】:2013-09-29 12:25:58
【问题描述】:
我希望能够解析 时间(小时、分钟、秒)的字符串,其中小时从 0 到 23,并且前面的零表示一位数小时是可选的。
我希望能够解析为有效DateTime 对象的时间 字符串示例:
- 212540
- 061525
- 94505
我正在尝试使用 C# 方法 DateTime.ParseExact 来管理解析,但我无法在它的生命周期内想出一个可以处理“不带零的个位数小时”场景的格式字符串。
我应该如何指定DateTime.ParseExact 格式字符串以使用同一行代码充分解析上面的所有示例?
受MSDN page on custom date and time formats的启发,我尝试了以下方法:
DateTime.ParseExact(time_string, "Hmmss", CultureInfo.InvariantCulture);
DateTime.ParseExact(time_string, "%Hmmss", CultureInfo.InvariantCulture);
DateTime.ParseExact(time_string, "HHmmss", CultureInfo.InvariantCulture);
所有这些格式字符串都适用于上面的前两个示例情况,但面对一位数小时且前面没有零,所有公式都会抛出 FormatException。
【问题讨论】:
-
如果
time_string只有五个字符宽,为什么不加一个零? -
您需要使用 Reflector 来反汇编
DateTime.Parse的代码,因为据我所见,Hmmss适用于前 2 个而不是最后一个。奇怪的是,根据文档,它技术上不应该适用于第二个,应该适用于最后一个。
标签: c# datetime string-parsing