我正在尝试使用以下语句进行简单的解析:
//In actual code the date time value comes from db
var dateTime = new DateTime(2018, 04, 26);
var dtExtact = DateTime.ParseExact(dateTime.ToString(), "dd MMM yyyy HH:mm:ss:fff",null);
现在当我尝试这样做时会出现错误,
System.FormatException:'字符串未被识别为有效的DateTime。'
我确实查看过MSDN示例,但它没有提供有关我的约会时间错误的任何指示。
答案 0 :(得分:4)
如果要以特定格式解析日期时间字符串,请确保格式化的日期/时间字符串与解析器的格式匹配。
在您的示例“round-tripping”中,通过重复使用相同的格式字符串格式化日期和进行解析,可以轻松实现日期/时间:
var dateTime = new DateTime(2018, 04, 26);
const string dateFormat = "dd MMM yyyy HH:mm:ss:fff";
var dtExact = DateTime.ParseExact(
dateTime.ToString(dateFormat)
, dateFormat
, null
);
Console.WriteLine("{0} {1}", dateTime, dtExact);
答案 1 :(得分:1)
ToString()和Parse()都设计为从Windows自动提取Region设置。覆盖此行为绝不是一个好主意。显然你的模式不是一个有效的模式。据我们所知,':'实际上并不是时间元素的适当文化分隔符
总的来说,这似乎相当可疑 - 你将DateTime转换为字符串,只是在那里再次解析它。我只能猜测它是用于测试的。但是测试问题是什么。
在处理DateTimes时我有3条一般规则:
遵循这些规则,我很少遇到任何问题。