gpt4 book ai didi

c# - ISO 8601 值的解析日期 24 :00:00 fails

转载 作者:太空狗 更新时间:2023-10-29 23:23:02 24 4
gpt4 key购买 nike

我正在尝试解析来自数据源的传入日期(无法更改)。它以 ISO 8601 格式示例给我时间:2007-04-05T24:00

如何在 .Net 中无法将其解析为有效时间。

维基百科声明它应该是有效格式。 Wikipedia ISO 8601

示例来自 https://stackoverflow.com/a/3556188/645410

如果没有讨厌的字符串检查 hack,我怎么能做到这一点?

示例( fiddle :http://dotnetfiddle.net/oB7EZx):

var strDate = "2007-04-05T24:00";       
Console.WriteLine(DateTime.Parse(strDate, null, DateTimeStyles.RoundtripKind));

抛出:

The DateTime represented by the string is not supported in calendar System.Globalization.GregorianCalendar.

最佳答案

是的,据我所知,.NET 不支持这一点。

我的 Noda Time project 可以,但只是部分:它可以解析该值,但该值只是在第二天开始时解析到午夜,并且从不格式化为 24: 00。野田时代的概念模型中没有任何东西可以代表“一天的结束”。

展示可能性的示例代码:

using System;
using NodaTime;
using NodaTime.Text;

class Test
{
static void Main()
{
string text = "2007-04-05T24:00";
var pattern = LocalDateTimePattern.CreateWithInvariantCulture
("yyyy-MM-dd'T'HH:mm");
var dateTime = pattern.Parse(text).Value;
Console.WriteLine(pattern.Format(dateTime)); // 2007-04-06T00:00
}
}

如果您不介意丢失“2007-04-05T24:00”和“2007-04-05T00:00”输入之间的差异,那么您可能没问题。

关于c# - ISO 8601 值的解析日期 24 :00:00 fails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20879834/

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