2011-08-26 60 views
7

可能重複:
DateTime.TryParse century control C#日期時間的TryParse - 映射 '99' 至2099年,1999年不

我需要的TryParse一個字符串,如以下內容:「99年1月1日「轉換爲DateTime對象,並且我使用的是這樣的:

DateTime outDate; 
if (DateTime.TryParseExact("01/01/99", "dd/MM/yy", null, System.Globalization.DateTimeStyles.None, out outDate)) 
{ 
    //Do stuff here 
} 

當然,這個日期被解析爲01/01/1999,這是不是我想要的 - 我想要它解析爲2099.有沒有簡單的方法來做到這一點?悲傷地修改我分析的數據以包括全年不是一種選擇。

+7

我們從Y2K學到什麼嗎? :( –

+0

IIRC,根據2位數年份確定一個世紀的門檻值,我不確定是否可以通過配置更改門檻值 –

+1

應該是兩位數年份總是推斷爲20yy? –

回答

5

取自this answer,您可以提供ParseExact()的文化對象。嫌疑人TryParseExact()將是相同的:

CultureInfo ci = new CultureInfo(CultureInfo.CurrentCulture.LCID); 
ci.Calendar.TwoDigitYearMax = 2099; 
//Parse the date using our custom culture. 
DateTime dt = DateTime.ParseExact(input, "MMM-yy", ci); 
+0

太棒了,作品一種享受 - 謝謝! – Chris

0

這是一個區域設置。在Windows 7中,您可以在控制面板>時鐘,語言和區域>區域和語言中進行編輯。在格式選項卡上,點擊高級按鈕並查看日期。

我不知道有什麼辦法來務實地改變這種情況,但是如果你在控制面板中設置它,只要你不改變文化,你的應用程序就會使用它。

這就是說,你真的需要去打敗那些用重物提供這些數據的人。我們應該在12年前消除這種類型的Y2K廢話。

編輯 - dan04的評論鏈接也有一些選項。