重新提到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
整个结果更改时,为什么会发生这种情况?这取决于文化属性吗?
答案 0 :(得分:1)
这里的问题是,在第一种情况下,它会猜测你的意思并给你一个约会。在第二种情况下,它无法解决您的意思,因此无法解析。幸运的是TryParse
有一个报告它是否成功的机制,它的返回值。当第一个返回true时,第二个返回false
,因此结果的值是无意义的,不应该被检查(尽管它似乎是default(DateTime)
)。
正如我在评论中提到的,在为DateTime字符串使用不常用的格式时,通常最好使用DateTime.TryParseExact
。这种方法的工作方式非常相似,除非您准确地告诉它您希望字符串处于什么格式,并使用它来解析而不是尝试最好地猜测您的意思。如果输入格式错误(或者格式说明符错误),您仍需要检查返回值。
答案 1 :(得分:1)
请在this回答
但他们告诉系统字符串是什么:“5-5-5-5”是一个可怕的日期字符串格式。除非我误解,否则格式字符串可能是:“d-M-y-h”,除非我误解