当前位置: 首页 > 知识库问答 >
问题:

使用DateTime.TryParse检查字符串是否为有效日期

仲孙阳
2023-03-14

更新:

这是否意味着,如果我想检查一个特定的字符串是否是有效的日期时间,我需要一个巨大的格式数组??会有不同的组合,我相信。
即使有很多日期分隔符('.'、'/'、'-'等)根据区域性的不同,我很难定义要检查的格式数组。
基本上,我想检查一个特定的字符串是否至少包含日(1到31或01到31)、月(1到12或01到12)和年(yyyy或yy),以任何顺序,使用任何日期分隔符,解决方案是什么?
所以,如果该值包括任何时间部分,它也应该返回true。我无法定义格式数组。

共有1个答案

凤衡
2023-03-14

如果希望日期符合特定的格式,请使用datetime.tryparseexact,否则这是datetime.tryparse的默认行为

TryParse

如果可能,此方法尝试忽略无法识别的数据,并用当前日期填充缺少的月、日和年信息。如果s只包含日期而不包含时间,则此方法假定时间为12:00午夜。如果%s包含具有两位数年份的日期组件,则根据calendar.TwoDigitYearMax属性的值将其转换为当前区域性当前日历中的年份。忽略%s中的任何前导、内部或尾随空白字符。

string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", 
                   "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", 
                   "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", 
                   "M/d/yyyy h:mm", "M/d/yyyy h:mm", 
                   "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"};
string[] dateStrings = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM", 
                        "5/1/2009 6:32:00", "05/01/2009 06:32", 
                        "05/01/2009 06:32:00 PM", "05/01/2009 06:32:00"}; 
DateTime dateValue;

foreach (string dateString in dateStrings)
{
   if (DateTime.TryParseExact(dateString, formats, 
                              new CultureInfo("en-US"), 
                              DateTimeStyles.None, 
                              out dateValue))
      Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
   else
      Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
}
// The example displays the following output: 
//       Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM. 
//       Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM. 
//       Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM. 
//       Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM. 
//       Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM. 
//       Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
 类似资料:
  • 问题内容: 检查值是否为有效日期(允许使用任何已知的日期格式)的简便方法是什么。 比如我有值,,它都应该被视为日期值,和值,,,不应被视为一个日期值。如果可能的话,最简单的检查方法是什么?因为时间戳也将被允许。 问题答案: 作为此副本的副本而被关闭,因此我认为在此处添加一些新信息很重要。我之所以写它,是因为我害怕人们会真正复制并粘贴此处发布的一些代码并在生产中使用它。 此处的大多数答案都使用一些仅

  • 问题内容: 是否有任何函数可以像MSSQL中那样返回给定字符串是否为日期? 问题答案: 您可以创建一个函数: 然后,您可以像这样使用它:

  • 我在使用Jsoup解析器时遇到困难。如何判断给定的字符串是否是有效的HTML代码? isValid标记为true,因为JSoup首先使用HtmlTreeBuilder:如果仅有html、head或body标记丢失,它会自行添加它们。然后它使用Cleaner类,并根据给定的白名单进行检查。 有没有简单的方法可以检查字符串是否是有效的HTML,而不需要Jsoup尝试将其变成HTML? 我的例子是AJA

  • 问题内容: 我有像 如何检查字符串是否为日期? 使用正则表达式检查String是否为数字 问题答案: 其他人也是正确的 这是你的答案

  • 我正在尝试使用PHP编写一个函数来确定字符串是否是日期/时间。基本上,有效日期/时间如下所示: 显然,尽管它是完全动态的,但任何值都可以更改,但它应该始终以的形式出现,我如何编写正则表达式来检查此模式并在匹配时返回true。

  • 问题内容: Golang文件路径模块(https://golang.org/pkg/path/filepath/)包含一些用于处理路径的函数,可用于检查文件是否存在。有没有一种方法可以检查字符串是否真的构成了有效路径(无论该路径处是否有文件)? 问题答案: 这个问题听起来很简单,但实际上并非如此。这是我发现的两个可能的解决方案: 这里的想法是根据规则检查给定的文件路径。 问题 作业系统(UNIX