gpt4 book ai didi

c# - Datetime.Parse() 可交换格式?

转载 作者:行者123 更新时间:2023-11-30 20:59:53 26 4
gpt4 key购买 nike

查看格式:"MMM d yyyy"

这是有效的

var t="Mar 2013 7";
DateTime dt=DateTime.Parse(t);

但是

also this :"Mar 7 2013"
and this :"7 Mar 2013"

正在工作

看着:

new DateTimeFormatInfo()
.GetAllDateTimePatterns()
.Select((i,n)=>n+" "+i)
.ToList()
.ForEach(f=>Console.WriteLine(f));

Which is All the standard patterns in which date and time values can be formatted.

结果是:

0    MM/dd/yyyy
1 yyyy-MM-dd
2 dddd, dd MMMM yyyy
3 dddd, dd MMMM yyyy HH:mm
4 dddd, dd MMMM yyyy hh:mm tt
5 dddd, dd MMMM yyyy H:mm
6 dddd, dd MMMM yyyy h:mm tt
7 dddd, dd MMMM yyyy HH:mm:ss
8 MM/dd/yyyy HH:mm
9 MM/dd/yyyy hh:mm tt
10 MM/dd/yyyy H:mm
11 MM/dd/yyyy h:mm tt
12 yyyy-MM-dd HH:mm
13 yyyy-MM-dd hh:mm tt
14 yyyy-MM-dd H:mm
15 yyyy-MM-dd h:mm tt
16 MM/dd/yyyy HH:mm:ss
17 yyyy-MM-dd HH:mm:ss
18 MMMM dd
19 MMMM dd
20 yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK
21 yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK
22 ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
23 ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
24 yyyy'-'MM'-'dd'T'HH':'mm':'ss
25 HH:mm
26 hh:mm tt
27 H:mm
28 h:mm tt
29 HH:mm:ss
30 yyyy'-'MM'-'dd HH':'mm':'ss'Z'
31 dddd, dd MMMM yyyy HH:mm:ss
32 yyyy MMMM
33 yyyy MMMM

问题:

  • 我在列表中没有看到 MMM d yyyy 格式。那么它是怎么做到的呢?它会尝试所有组合吗?

  • 添加时间格式 MMM d yyyy 怎么样? [Mar 3 2007 13:13:13] 它也可以,但没有特定格式。那么它是如何做到的呢?

最佳答案

我已经使用 Reflector 来查看这个。几百行的解析代码真的很复杂!

然而,最终它最终将输入字符串标记化并尝试将标记分类为日期名称、月份名称、年份、日期数字等。

特别是一个叫做 internal TokenHashValue[] CreateTokenHashTable() 的函数有这样的东西:

for (int i = 1; i <= 12; i++)
{
this.InsertHash(dtfiTokenHash, this.GetAbbreviatedMonthName(i), TokenType.MonthToken, i);
}

它使用这个(如您所见,它具有所有缩写的月份名称)来确定标记是否为月份名称。日期名称也有类似的代码。

解析代码还会检查其中一个数字的长度是否大于 2 位。如果是,它假定它是一年。这意味着(你可以验证)你可以有一个 3 位数的年份,它仍然可以解析它。但它变得更加复杂!它还会检查数字是否大于 12,如果是,则假定它是一年。

如果你输入两个小于或等于 12 的数字,它仍然有效,但它假定第一个是一天,第二个是一个月(对于英国文化 - 我打赌它是其他文化不同)。

这当然允许它在没有警告的情况下解析不明确的日期。

结果是:永远不要像这样解析日期

总是ParseExact()

关于c# - Datetime.Parse() 可交换格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15271075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com