[英]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.