【发布时间】:2013-04-18 05:30:55
【问题描述】:
我正在使用DateTime.TryParse() 函数来检查特定字符串是否是有效的日期时间,而不取决于任何文化。
令我惊讶的是,该函数返回 true 甚至字符串,如“1-1”、“1/1”等。
我该如何解决这个问题?
更新:
这是否意味着,如果我想检查一个特定的字符串是否是有效的日期时间,我需要大量的格式?我相信会有不同的组合。
根据文化,即使有很多日期分隔符('.'、'/'、'-' 等),我也很难定义要检查的格式数组。
基本上,我想检查一个特定的字符串是否至少包含天(1 到 31 或 01 到 31)、月份(1 到 12 或 01 到 12)和年份(yyyy 或 yy),以任何顺序,任何日期分隔符,解决方案是什么?
因此,如果该值包含时间的任何部分,它也应该返回 true。
我无法定义格式数组。
【问题讨论】:
-
您首先要定义解决方案。我可以看到这两个都被解释为当年的 1 月 1 日。问题解决了。
-
没错,伍德。我不确定这是如何工作的,但是像 "1-1000" 这样的字符串会给你 1000 年 1 月 1 日。
-
有什么问题?按照设计,没有年份的日期默认返回今年...您需要做什么?
-
@Laurence,这个函数如何假设输入字符串的哪一部分是年份呢??
-
我不知道它在内部是如何工作的,但是可以合理地假设如果有两个数字,并且都小于 31,那么一个是月份,一个是天。然后它会给出今年是今年。就像我告诉你“我是在 2 月 10 日做的”一样,你会认为我说的是今年……你想做什么?使用 TryParseExact() 可能会满足您的需求...