gpt4 book ai didi

c# - DateTime 解析失败 24 :00:00 in the HH:mm:ss format

转载 作者:太空狗 更新时间:2023-10-29 19:55:52 30 4
gpt4 key购买 nike

我有时在解析时注意到一个非常有趣的错误。

DateTime 无法解析 24:00:00。在一些谷歌搜索和堆叠下,我发现 DateTime 只能识别 00 - 23(什么?????),所以如果你的输入是 24: 00:00,你真倒霉。你会认为有人会把 24:00:00 等同于 00:00:00(午夜),但现在还没有……

我的问题是,如何让 DateTime 允许我解析 24:00:00

不幸的是,由于规范原因,我无法使用 NodaTime(抱歉,乔恩。不过我喜欢你的图书馆)。

实验如下:

2014-03-18 24:00:00输入 会出现以下错误。预期。

enter image description here


2014-03-18 23:59:59输入 将成功解析。预期。

enter image description here


2014-03-19 00:00:00` 的 input 将成功解析。预期。

enter image description here

最佳答案

DateTime 类中不支持“24 小时”。

The hour (HH/H, 24-hour clock) must be 0-23, inclusive .这就是为什么 00:00:00 有效而 24:00:00 无效的原因。

将 24:00:00 更改为 00:00:00(解析前),如果需要,适当提前一天(解析后)。


尽管它不考虑任意格式,但以下内容将按提供的格式按时间工作(但仅限于第 24 小时)。支持不同的格式字符串只会增加额外的复杂性。

DateTime ParseWithTwentyFourthHourToNextDay (string input) {
var wrapped = Regex.Replace(input, @"24:(\d\d:\d\d)$", "00:$1");
var res = DateTime.ParseExact(wrapped, "yyyy-MM-dd HH:mm:ss", null);
return wrapped != input
? res.AddDays(1)
: res;
}

关于c# - DateTime 解析失败 24 :00:00 in the HH:mm:ss format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22643906/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com