将字符串转换为日期时间dd / MM / yyyy hh:mm:ss tt

我如何将这个7/3/2015 12:40:02 PM转换为DateTime,格式为"dd/MM/yyyy hh:mm:ss tt"我这样做了:

 BreackEndTime = DateTime.ParseExact(configViewModel.EndPause, "dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 

但我总是得到

字符串未被识别为有效的DateTime。

在此处输入代码

由于数月和数天可以使用一位数

 BreackEndTime = DateTime.ParseExact(configViewModel.EndPause, "d/M/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 

“M”自定义格式说明符 (示例, d类似)

“M”自定义格式说明符将月份表示为1到12之间的数字(对于有13个月的日历,表示1到13之间的数字)。 格式化一位数的月份没有前导零。

更新

由于小时也可以有一个数字,你必须使用:

 DateTime.ParseExact("7/3/2015 1:52:16 PM", "d/M/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);` 

…所以"d/M/yyyy h:mm:ss tt"而不是"d/M/yyyy hh:mm:ss tt" 。 请注意,这同样适用于分钟和秒,如果它们也可以使用单个数字,则使用"d/M/yyyy h:m:s tt" 。 我希望你现在明白了。

如果你的7/3/2015 12:40:02 PM是字符串,你需要使用单数字格式说明符作为M说明符和d说明符之类;

 BreackEndTime = DateTime.ParseExact(configViewModel.EndPause, "M/d/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 
 FORMAT(CM.TransactionDate,'hh:mm:ss tt') 

这是在我的情况下运行良好的代码:

  Console.WriteLine("deal with regex datetime: "); string input = "11/24 5:41:00 AM"; DateTime newDate; CultureInfo enUS = new CultureInfo("en-US"); try { newDate = DateTime.ParseExact(input, "M/dh:mm:ss tt", CultureInfo.InvariantCulture); Console.WriteLine("parse result: " + newDate); } catch (Exception err) { Console.WriteLine("error parsing input string. date format is wrong or string chaged " + err); }