将指定的日期和时间字符串表示形式转换为其DateTime等效项

时间:2015-06-30 12:21:02

标签: c# datetime

重新提到SO上的问题。

代码1:

DateTime.TryParse("5-5-5-5" , CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal  , out result);

代码2:

DateTime.TryParse("5-5-5-5.00" , CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal  , out result);

当格​​式更改为5-5-5-5.00整个结果更改时,为什么会发生这种情况?这取决于文化属性吗?

2 个答案:

答案 0 :(得分:1)

这里的问题是,在第一种情况下,它会猜测你的意思并给你一个约会。在第二种情况下,它无法解决您的意思,因此无法解析。幸运的是TryParse有一个报告它是否成功的机制,它的返回值。当第一个返回true时,第二个返回false,因此结果的值是无意义的,不应该被检查(尽管它似乎是default(DateTime))。

正如我在评论中提到的,在为DateTime字符串使用不常用的格式时,通常最好使用DateTime.TryParseExact。这种方法的工作方式非常相似,除非您准确地告诉它您希望字符串处于什么格式,并使用它来解析而不是尝试最好地猜测您的意思。如果输入格式错误(或者格式说明符错误),您仍需要检查返回值。

答案 1 :(得分:1)

请在this回答

但他们告诉系统字符串是什么:“5-5-5-5”是一个可怕的日期字符串格式。除非我误解,否则格式字符串可能是:“d-M-y-h”,除非我误解