我正在尝试从表示日期时间的字符串中删除隐藏字符。我正在使用.Net Fiddle,您可以看到尝试ParseExact的行失败。
这是一个片段。有关工作代码,请参阅小提琴链接。
var dateTime = "2015-04-14 07:30:00 PM"; //<= this throws an error from some hidden char
dateTime = Regex.Replace(dateTime, @"[^\w:\s-]", "");
Console.WriteLine(dateTime);
DateTime dateWithTime = DateTime.ParseExact(dateTime, "yyyy-MM-dd HH:mm:ss tt",
CultureInfo.InvariantCulture);
Console.WriteLine("OK");
答案 0 :(得分:4)
它不是一个看不见的角色。您对HH
的使用与tt
的使用冲突。 HH
是24小时,但您使用tt
来解释PM(12小时时间)。将其更改为hh
即可。
var dateTime = "2015-04-14 07:30:00 PM";
//dateTime = Regex.Replace(dateTime, @"[^\w:\s-]", ""); <= not needed
Console.WriteLine(dateTime);
DateTime dateWithTime = DateTime.ParseExact(dateTime, "yyyy-MM-dd hh:mm:ss tt",
CultureInfo.InvariantCulture);
Console.WriteLine("OK");
答案 1 :(得分:4)
格式字符串中的HH
是指24小时制小时,在PM时间格式字符串中使用AM / PM时不起作用。
将HH
更改为hh
。
答案 2 :(得分:1)
您需要将HH更改为hh。
yyyy-MM-dd hh:mm:ss tt