无法从字符串中删除隐藏的字符

时间:2015-04-10 01:02:18

标签: c# regex datetime

我正在尝试从表示日期时间的字符串中删除隐藏字符。我正在使用.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");

3 个答案:

答案 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