簡體   English   中英

使用bg-BG文化和dd-MMM-yyyy格式解析11月的日期時間。

[英]Parsing a date time in november using bg-BG culture and dd-MMM-yyyy format.

我正在研究日期和時間的本地化代碼,當文化被設置為保加利亞語時,我看到一種奇怪的行為,我傳遞的日期是11月。

基本上,我試着打電話:

if (DateTime.TryParse(theDateToParse, formatProvider, DateTimeStyles.None, out localDate))
{ //Do code work here }

其中theDateToParse = 15-Нов-2013 15:20:39(此值來自jquery日期選擇器,附加時間,並且是11月15日),formatProvider是bg-BG文化信息。

測試其他價值觀和其他文化,似乎問題特定於11月bg-BG文化中的任何日期。 此外,如果我將其更改為使用完整的月份名稱,它可以正確解析它。

為了測試這個理論,我反過來為每個月的一天創建了一個dateTime對象,並使用dd-MMM-yyyy格式將它們轉換為字符串。 對於每個月我都有一個縮短的月份名稱,除了11月,我有一個完整的月份名稱。

我只是想看看是否有人有關於為什么會發生這種情況的任何背景,或者有任何聰明的解決方案來使這個案例有效。 我花了一些時間搜索,我甚至找不到遇到同樣問題的人。

運行此代碼:

var culture = CultureInfo.CreateSpecificCulture("bg-BG");
foreach (var name in culture.DateTimeFormat.AbbreviatedMonthNames)
    Debug.WriteLine(name);

給出這些月份名稱縮寫:

януфевмарапрмайюниюлиавгсепоктноедек

似乎.Net在保加利亞語中將11月的縮寫設為“ное”,而不是輸入中的“Нов”字符串。

我不會說保加利亞語,但谷歌翻譯接受“ное”為“11月”,但“Нов”被翻譯為英語為“新”。 所以我的猜測是源數據不正確。

最好的解決方案是永遠不要將日期作為本地化字符串在客戶端和服 而是使用ISO8601格式,例如2013-11-15T15:20:39

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM