【发布时间】:2017-06-10 16:02:52
【问题描述】:
我有以下代码行:
DateTime dt1 = DateTime.ParseExact("2017/04/09 2:44 PM", "yyyy/MM/dd h:mm tt", System.Globalization.CultureInfo.InvariantCulture);
您可以看到日期时间和格式匹配(至少看起来匹配),但在转换时我仍然收到错误:
字符串未被识别为有效的日期时间。
【问题讨论】:
我有以下代码行:
DateTime dt1 = DateTime.ParseExact("2017/04/09 2:44 PM", "yyyy/MM/dd h:mm tt", System.Globalization.CultureInfo.InvariantCulture);
您可以看到日期时间和格式匹配(至少看起来匹配),但在转换时我仍然收到错误:
字符串未被识别为有效的日期时间。
【问题讨论】:
不确定您将其带到何处,但您的输入中有一些不可见的 Unicode 字符。尝试复制粘贴它,它会工作:
DateTime dt1 = DateTime.ParseExact("2017/04/09 2:44 PM", "yyyy/MM/dd h:mm tt", System.Globalization.CultureInfo.InvariantCulture);
进一步挖掘,在 / 和 0 之间有一个“E2 80 8E”,在 2 之前还有一个。According to the unicode table,这是“从左到右的标记”。
使其工作的一种方法是删除所有您不希望看到的字符:
var input = "2017/04/09 2:44 PM";
var sanitizedInput = Regex.Replace(input, @"[^\w:/ ]", string.Empty);
DateTime dt1 = DateTime.ParseExact(sanitizedInput, "yyyy/MM/dd h:mm tt", System.Globalization.CultureInfo.InvariantCulture);
【讨论】: