C# 更改时间时DateTime解析不起作用

C# 更改时间时DateTime解析不起作用,c#,parsing,datetime,datetime-format,C#,Parsing,Datetime,Datetime Format,在更改传递到解析方法中的日期的时间之前,我很难理解为什么正确解析我的日期 var parsedDate = DateTime.ParseExact("2016-02-05T07:00:00+00:00", "yyyy-MM-ddThh:mm:ss+00:00", CultureInfo.InvariantCulture); dateValueToTryParse = parsedDate.ToString("dd/MM/yyyy"); 输出所需的结果,我确实得到了05/02/2016。但是,如

在更改传递到解析方法中的日期的时间之前,我很难理解为什么正确解析我的日期

var parsedDate = DateTime.ParseExact("2016-02-05T07:00:00+00:00", "yyyy-MM-ddThh:mm:ss+00:00", CultureInfo.InvariantCulture);
dateValueToTryParse = parsedDate.ToString("dd/MM/yyyy");
输出所需的结果,我确实得到了
05/02/2016
。但是,如果我将传入的字符串更改为:

2016-02-19T23:59:00+00:00

dateValueToTryParse
的输出保持不变,并且未正确解析。我的语法分析有什么特别的错误吗?我很困惑,因为格式似乎完全一样

您需要将传入格式更改为
yyyy-MM-ddTHH:MM:ss+00:00

区别在于
HH
。大写H表示24小时制或“军事时间”

否则,它将试图解析不存在的第23小时


有关其他格式的详细信息,请参见此处:

hh
更改为
hh
说明符可以解决您的问题,但由于您的字符串有一个值,为了保持一致性,我宁愿将其解析为而不是
DateTime

现在,您有一个
DateTimeOffset
作为
{05.02.2016 23:00:00+00:00}
,您可以使用它来获取它所表示的
DateTime

var dateValueToTryParse = dto.DateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

这将生成
05/02/2016

您确定在重新运行代码之前重新编译了吗?关于“我没有阅读,但为什么我的字符串没有正确解析天/月/小时”有很多问题。我不确定是否每个版本都需要自己的问题,所以投票结束为“排版错误”(如果不同意),请考虑找到好的副本,而不是提供另一个使用“HH”,而不是“HH”。。有道理。我没有正确阅读文档是我的错。我想这是我没有正确阅读文档的错误。非常感谢您指出它。在发布更多问题之前,请务必先检查它:)谢谢您的帮助time@Chongman哦,不,兄弟,这不是RTFM的事。只是把它传过去。
var dateValueToTryParse = dto.DateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);