C# 将Int解析为一年的最佳方法是什么?

C# 将Int解析为一年的最佳方法是什么?,c#,parsing,integer,C#,Parsing,Integer,我有一个文本框,用户可以在其中输入年份“YY”,我正在使用以下方法对其进行解析: int year; if (int.TryParse(txtYear.Text, out year)) { args.Year = year; } 问题是TryParse会将'07'转换为'7',我的方法预计年份的格式为YYYY(例如,输入“07”应为“2007”)。进行此转换的最佳方法是什么?最佳方法是请求用户输入所有四位数字。2K问题的部分原因是传统系统假设2位数就足够了 如果必须这样做,那么只需在结

我有一个文本框,用户可以在其中输入年份“YY”,我正在使用以下方法对其进行解析:

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;
}
对于足够大的输入(“99”->1999,“00”->2000),您可能希望添加1900而不是2000,这取决于用户在输入“99”时打算使用2099的可能性

正如@Mark所建议的,请注意2K问题


我只要求用户以YYYY格式输入年份。

我对该方法进行了一些测试,目前它返回的日期范围为1930-2029。我想知道他们是否会在2030年之前改变这一点。。。
int year;
if (int.TryParse(txtYear.Text, out year))
{
    args.Year = DateTime.Now.Year - (DateTime.Now.Year%100) + year;
}
int year;
if (int.TryParse(txtYear.Text, out year))
{
    args.Year = DateTime.Now.Year - (DateTime.Now.Year%100) + year;
}