2010-08-01 61 views
0

我有一個文本框,用戶可以輸入年份「YY」,我使用解析它:解析Int到一年的最佳方法是什麼?

int year; 
if (int.TryParse(txtYear.Text, out year)) 
{ 
    args.Year = year; 
} 

該問題的TryParse將轉換「07」到「7」,我的方法是期待的一年格式爲YYYY(例如輸入「07」應該是「2007」)。做這種轉換的最佳方式是什麼?

回答

4

最好的方法是請求用戶輸入全部四位數字。 2K問題的部分原因是假設2位數字總是足夠的傳統系統。

如果你有要做到這一點,那麼只需添加2000到你的結果。

int year; 
if (int.TryParse(txtYear.Text, out year)) 
{ 
    args.Year = year + 2000; 
} 

您可能需要添加1900,而不是2000年了足夠大的輸入(「99」 - > 1999年,「00」 - > 2000),這取決於它是如何可能是你的用戶打算2099,當他們進入「99」。

5
DateTime date; 
if (DateTime.TryParseExact("07", "yy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date)) 
{ 
    Console.WriteLine(date.Year); 
} 

由於@Mark建議儘管注意2K問題。

我只是要求用戶輸入YYYY格式的年份。

+1

我做了一些這種方法的測試,它目前返回的日期範圍爲1930年至2029年。我想知道他們是否會在2030年之前改變它... – 2010-08-01 16:47:03

0
int year; 
if (int.TryParse(txtYear.Text, out year)) 
{ 
    args.Year = DateTime.Now.Year - (DateTime.Now.Year%100) + year; 
} 
相關問題