我有一个文本框,用户可以输入一年“YY”并使用以下方法解析它:
int year;
if (int.TryParse(txtYear.Text, out year))
{
args.Year = year;
}
问题是TryParse将'07'转换为'7'并且我的方法期望年份为YYYY格式(例如输入“07”应为“2007”)。这种转换的最佳方法是什么?
答案 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;
}