C# 转换为有效日期时间的最长字符串是什么?

C# 转换为有效日期时间的最长字符串是什么?,c#,.net,datetime,data-cleaning,date-formatting,C#,.net,Datetime,Data Cleaning,Date Formatting,我正在编写一个数据解析器,并试图确定字段是否是数字、日期、字符串等 可以理解.NET DateTime.TryParse在检查许多记录时速度较慢,因为它检查许多不同的日期格式。因此,如果可能的话,我想缩短处理过程。一开始我可以做的一个简单检查是查看字符串的长度,如果它超出某些界限,就拒绝它 我认为我应该合理预期的最短日期为6个字符,例如d/M/yy,因此我可以进行以下检查: if (fieldValue.Length < 6) { // no datetime is shorter

我正在编写一个数据解析器,并试图确定字段是否是数字、日期、字符串等

可以理解.NET DateTime.TryParse在检查许多记录时速度较慢,因为它检查许多不同的日期格式。因此,如果可能的话,我想缩短处理过程。一开始我可以做的一个简单检查是查看字符串的长度,如果它超出某些界限,就拒绝它

我认为我应该合理预期的最短日期为6个字符,例如d/M/yy,因此我可以进行以下检查:

if (fieldValue.Length < 6)
{
    // no datetime is shorter than 6 chars (e.g. d/M/yy is the shotest I can think of)
    return false;
}
表示可解析日期时间的最长字符串是什么

例如,2020年9月30日星期三12:34:56相当长,但我打赌还有更长的例子

有几点:

我不是在寻找用空格或类似的东西填充日期的狡猾的答案。 我最初关注的是英语约会,但如果其他文化能提供更长的例子,我会感兴趣。 仍然表示可解析字符串的最长字符串是什么 约会时间

看一看清单,把所有这些都考虑进去

例如:

DateTime dt = DateTime.Now;
string strNow = dt.ToString("dddd, MMMM dd, yyyy gg hh:mm:ss.fffffff tt K");
Console.WriteLine(strNow);
给出:

Tuesday, June 16, 2020 A.D. 08:47:02.2667911 AM -06:00

但是这些不同类型的值可以根据DateTime中的信息进行不同的输出。仔细查看文档中每个说明符的所有不同可能输出,以了解我的意思。

您不认为DateTime.TryParse也实现了这些断言,比如在字符串成为有效日期之前检查其最小长度吗?也许你真的会增加处理时间。这是一个很好的观点,亚历山大。我想知道是否有人能确认?你可能想考虑一下,如果你知道你只有一些确切的日期时间格式,只要检查这些格式。我会说最长的日期字符串比绝大多数实用的字符串/数值要长得多。@马克罗宾逊,如果你真的感兴趣的话,这里是。如果您查看GetRegularToken,您将看到当它找到一个数字时,它将继续收集后续的数字。因此,如果您有一个只包含数字的非常长的字符串,它将尝试使用整个字符串。DateFormatInfo.Tokenize下的字母也一样,所以可能类似于:公元2020年9月16日星期三08:47:02.2667911 AM-06:00。。。它有61个字符长。