如何将此7/3/2015 12:40:02 PM
转换为格式为"dd/MM/yyyy hh:mm:ss tt"
的DateTime,我这样做了:
BreackEndTime = DateTime.ParseExact(configViewModel.EndPause, "dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
但我总是得到
字符串未被识别为有效的DateTime。
答案 0 :(得分:14)
由于数月和数天可以使用一位数
BreackEndTime = DateTime.ParseExact(configViewModel.EndPause, "d/M/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
The "M" Custom Format Specifier(示范,[{3}}的作品类似)
" 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"
。我希望你现在明白了。
答案 1 :(得分:2)
如果您的7/3/2015 12:40:02 PM
是字符串,则需要使用单个数字格式说明符M
specifier和d
specifier;
BreackEndTime = DateTime.ParseExact(configViewModel.EndPause,
"M/d/yyyy hh:mm:ss tt",
CultureInfo.InvariantCulture);
答案 2 :(得分:0)
这是在我的案例中运作良好的代码:
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/d h: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);
}