将字符串转换为日期时间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); }