此值是否为有效年份C#

时间:2009-12-03 11:37:50

标签: c# datetime tryparse

使用C#检查字符串是否为有效年份的最佳方法是什么?

我目前有一个下拉列表,其中包含值{'All','2009','2008'}等,我想知道选择是其中一个日期还是'All'字段。

目前我正在检查bool isYearValid = (Year.ToLower() == "all") ? false : true;

如何检查该值是否为有效年份,以便我不必对“全部”进行硬编码检查?

6 个答案:

答案 0 :(得分:10)

鉴于一年只需要一个有效的数字,你可以使用int32.TryParse,然后根据你想要年份的范围来检查范围。

答案 1 :(得分:8)

您可以尝试将年份解析为整数:

int iYear = 0;

if (Int.TryParse(Year, out iYear))
{
  //You have a valid year inside iYear
  //If you are not sure about the dropdown list values,
  //you can of course do more checks for validity. For example:
  //if iYear is in a proper range
}

答案 2 :(得分:3)

你可以使用:

        DateTime dateTime;
        var year = ...
        DateTime.TryParse(string.Format("1/1/{0}", year), out dateTime);

答案 3 :(得分:0)

无论如何这不会更好吗?

bool isYearValid = !string.Equals(Year, "all", StringComparison.OrdinalIgnoreCase);

答案 4 :(得分:0)

怎么样:

<asp:ListItem Value="1900" Text="All" />

这样您就不必在验证点手动检查“全部”。你仍然需要检查1900,当实际实现这个时,但是现在肯定有办法避免使那个成为特殊场景。

除此之外,DateTime.TryParse是查明字符串表示是否为有效日期的正确方法。

答案 5 :(得分:0)

嗯,没有人提到它,但为什么没有定义'All'的符号 某处并在下拉初始化和比较中使用它?