2

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

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

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

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

4

6 回答 6

9

鉴于年份只需要是一个有效数字,您就可以使用 int32.TryParse ,然后根据您希望年份所在的范围简单地检查范围。

于 2009-12-03T11:41:09.870 回答
8

你可以使用:

        DateTime dateTime;
        var year = ...
        DateTime.TryParse(string.Format("1/1/{0}", year), out dateTime);
于 2009-12-03T11:43:14.503 回答
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
}
于 2009-12-03T11:48:19.870 回答
0

这不是更好吗?

bool isYearValid = !string.Equals(Year, "all", StringComparison.OrdinalIgnoreCase);
于 2009-12-03T11:41:53.910 回答
0

怎么样:

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

这样您就不必在验证点手动检查“全部”。在实际实施时,您仍然需要检查 1900,但无论如何,现在肯定有办法避免将变成特殊情况。

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

于 2009-12-03T11:45:02.097 回答
0

好吧,没有人提到它,但为什么不在某处定义“全部”的符号并在下拉初始化和比较中使用它呢?

于 2009-12-03T13:39:15.310 回答