我有一個文本框,用戶可以輸入年份「YY」,我使用解析它:解析Int到一年的最佳方法是什麼?
int year;
if (int.TryParse(txtYear.Text, out year))
{
args.Year = year;
}
該問題的TryParse將轉換「07」到「7」,我的方法是期待的一年格式爲YYYY(例如輸入「07」應該是「2007」)。做這種轉換的最佳方式是什麼?
我有一個文本框,用戶可以輸入年份「YY」,我使用解析它:解析Int到一年的最佳方法是什麼?
int year;
if (int.TryParse(txtYear.Text, out year))
{
args.Year = year;
}
該問題的TryParse將轉換「07」到「7」,我的方法是期待的一年格式爲YYYY(例如輸入「07」應該是「2007」)。做這種轉換的最佳方式是什麼?
最好的方法是請求用戶輸入全部四位數字。 2K問題的部分原因是假設2位數字總是足夠的傳統系統。
如果你有有要做到這一點,那麼只需添加2000到你的結果。
int year;
if (int.TryParse(txtYear.Text, out year))
{
args.Year = year + 2000;
}
您可能需要添加1900,而不是2000年了足夠大的輸入(「99」 - > 1999年,「00」 - > 2000),這取決於它是如何可能是你的用戶打算2099,當他們進入「99」。
DateTime date;
if (DateTime.TryParseExact("07", "yy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
{
Console.WriteLine(date.Year);
}
由於@Mark建議儘管注意2K問題。
我只是要求用戶輸入YYYY格式的年份。
int year;
if (int.TryParse(txtYear.Text, out year))
{
args.Year = DateTime.Now.Year - (DateTime.Now.Year%100) + year;
}
我做了一些這種方法的測試,它目前返回的日期範圍爲1930年至2029年。我想知道他們是否會在2030年之前改變它... – 2010-08-01 16:47:03