可以转换为有效 DateTime 的最长字符串是多少?

What is the longest string that would convert to a valid DateTime?

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

.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;
}

仍然表示可解析的 DateTime 的最长字符串是什么?

(例如,"Wednesday, 30th September 2020 12:34:56" 很长,但我敢打赌还有更长的例子!)

几点:

What is the longest string that still represents a parse-able DateTime?

查看 custom format specifiers for a DateTime 的列表,并将所有这些都考虑在内。

例如,这个:

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 中的信息以不同方式输出。仔细查看文档中每个说明符的所有不同可能输出,了解我的意思。