解析Int到一年的最佳方法是什么?

时间:2010-08-01 16:34:39

标签: c# parsing integer

我有一个文本框,用户可以输入一年“YY”并使用以下方法解析它:

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

问题是TryParse将'07'转换为'7'并且我的方法期望年份为YYYY格式(例如输入“07”应为“2007”)。这种转换的最佳方法是什么?

3 个答案:

答案 0 :(得分:5)

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

正如@Mark建议的那样,注意2K问题。

我只想让用户将年份输入YYYY格式。

答案 1 :(得分:4)

最好的方法是请求用户输入所有四位数字。 2K问题的部分原因是遗留系统假定2位数总是足够的。

如果你来执行此操作,那么只需在结果中添加2000即可。

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

您可能希望为足够大的输入(“99” - > 1999,“00” - > 2000)添加1900而不是2000,具体取决于用户输入“99”时用户的预期可能性为2099 ”。

答案 2 :(得分:0)

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