DateTime.Parse
而不是DateTime.ParseExact
試圖盡最大努力解析您的日期。這意味着它允許多個不同的日期分隔符,包括/
,-
,.
和
(空格)。但是,日期的組成部分的順序仍然是從DateTimeFormatInfo.CurrentInfo
推斷出來的,在您的情況下,這意味着該日在該月份之前。
所以你的希伯來文化DateTime.Parse("03-02-2013")
返回2013年2月3日,同時呼籲DateTime.Parse("03-02-2013", CultureInfo.InvariantCulture)
將返回2013年3月2日,因爲不變文化是基於具有一個月前一個月的en-US
文化。
究竟如何DateTime.Parse
的行爲是有點難以弄清楚,所以以下信息可能不完全準確。我相信DateTime.Parse
會嘗試尋找各種格式,其中可能包括D
,d
,y
,T
,t
以及DateTimeFormat.MonthDayPattern
定義的模式。
new[] { 'D', 'd', 'y', 'T', 't' }
.SelectMany(p => dateTimeFormatInfo.GetAllDateTimePatterns(p))
.Concat(new[] { dateTimeFormatInfo.MonthDayPattern })
希伯來文化,我得到以下列表:給定一個DateTimeFormatInfo
您可以使用此代碼得到的所有模式
dddd dd MMMM yyyy
dd MMMM yyyy
dddd dd 'ב'MMMM yyyy
ddd dd 'ב'MMMM yyyy
dd 'ב'MMMM yyyy
dd/MM/yyyy
dd MMMM yyyy
dd/MM/yy
dd/MMMM/yyyy
dd-MM-yy
dd-MM-yyyy
dd-MMMM-yyyy
yyyy-MM-dd
dd 'ב'MMMM yyyy
dd MMM yy
MMMM yyyy
HH:mm:ss
hh:mm:ss tt
HH:mm
hh:mm tt
dd MMMM
該名單包括dd-MM-yyyy
,但同樣,這個名單可能不完全準確。
但是'DateTimeFormatInfo.CurrentInfo.GetAllDateTimePatterns()'返回什麼? –