2017-02-20 42 views
0

我很确定我正在犯一些非常愚蠢的错误,但这让我疯狂。DateTime.ParseExact抛出异常

我努力做到以下几点:

var dateTime = DateTime.ParseExact("08/24/2016 12:00:00 AM", "MM/dd/yyyy HH:mm:ss tt", CultureInfo.InvariantCulture); 

但我不断收到以下异常:“字符串未被识别为有效的DateTime。”

我曾尝试: “M/DD/YYYY HH:MM:SS TT” “MM '/' DD '/' YYYY HH:MM:SS TT” “M '/' DD '/' yyyy HH:mm:ss tt“

但到目前为止没有任何工作......任何帮助,将不胜感激。

+0

它为我,我得到的输出24/08/2016 12 :00:00 – imsome1

+0

将格式字符串更改为:'“MM/dd/yyyy hh:mm:ss tt”' – Pikoh

回答

7

HH正在寻找一个24小时格式,但你也传入AM并指定tt - 分析器无法面对这一切。您需要可以找一个12小时的基于字符串:使用hh

var dateTime = DateTime.ParseExact("08/24/2016 12:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 

或删除AM/tt一部分。

+0

记住这个的好方法是'hh'是“小时数”,'HH'是“大时数”。 –

+0

我知道这是小事......谢谢! – Talon

2

对于12小时格式使用hh,而不是对于24小时格式的HH。此信息已在AM/PM中,不能由该方法处理两次。

var dateTime = DateTime.ParseExact("08/24/2016 12:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 
+0

我知道这是个小东西......谢谢! – Talon

1

你需要,因为HH使用24小时格式使用hh而不是HH,你也在形式指定ampm

var dateTime = DateTime.ParseExact("08/24/2016 12:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 
+0

我知道这是小事......谢谢! – Talon