代码之家  ›  专栏  ›  技术社区  ›  Ian R. O'Brien Mamedov

将int解析为一年的最佳方法是什么?

  •  0
  • Ian R. O'Brien Mamedov  · 技术社区  · 14 年前

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

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

    问题是,Tryparse将“07”转换为“7”,我的方法希望年份格式为YYYY(例如,输入“07”应为“2007”)。进行这种转换的最佳方法是什么?

    3 回复  |  直到 14 年前
        1
  •  4
  •   Mark Byers    14 年前

    最好的方法是要求用户输入所有四位数字。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
  •  5
  •   Darin Dimitrov    14 年前
    DateTime date;
    if (DateTime.TryParseExact("07", "yy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
    {
        Console.WriteLine(date.Year);
    }
    

    正如@mark所建议的,尽管注意2K问题。

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

        3
  •  0
  •   jgauffin    14 年前
    int year;
    if (int.TryParse(txtYear.Text, out year))
    {
        args.Year = DateTime.Now.Year - (DateTime.Now.Year%100) + year;
    }