Bja*_*rte 5 c# datetime iso8601
我正在尝试从数据源解析传入日期(无法更改).它给了我ISO 8601格式示例的时间:2007-04-05T24:00.
在.Net中,它无法将其解析为有效时间.
维基百科声明它应该是有效的格式.维基百科ISO 8601
如果没有令人讨厌的字符串检查黑客,我怎么能这样做?
示例(小提琴:http://dotnetfiddle.net/oB7EZx):
var strDate = "2007-04-05T24:00";
Console.WriteLine(DateTime.Parse(strDate, null, DateTimeStyles.RoundtripKind));
Run Code Online (Sandbox Code Playgroud)
抛出:
日历System.Globalization.GregorianCalendar中不支持字符串表示的DateTime.
是的,据我所知,.NET 不支持这一点。
我的Noda Time项目确实如此,但只是部分:它可以解析该值,但该值仅解析到第二天开始时的午夜,并且永远不会格式化为 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
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不介意丢失“2007-04-05T24:00”和“2007-04-05T00:00”输入之间的差异,那么您可能没问题。