Является ли это значение допустимым годом C#?

StackOverflow https://stackoverflow.com/questions/1839404

  •  12-09-2019
  •  | 
  •  

Вопрос

Как лучше всего проверить, является ли строка действительным годом, используя С#?

В настоящее время у меня есть раскрывающийся список, содержащий значения {'Все', '2009', '2008'} и т. д., и я хочу знать, является ли выбор одной из дат или полем "Все".

В настоящее время я проверяю bool isYearValid = (Year.ToLower() == "all") ? false : true;

Как мне проверить, является ли значение действительным годом, чтобы мне не приходилось жестко запрограммировать проверку «Все»?

Это было полезно?

Решение

Учитывая, что год просто должен быть допустимым числом, вы можете просто использовать int32.TryParse, а затем просто проверить диапазон в зависимости от того, в каком диапазоне вы хотите, чтобы год находился.

Другие советы

Вы можете попробовать проанализировать год как целое число:

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
}

вы можете использовать:

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

Не лучше ли это в любом случае?

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

Как насчет:

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

Таким образом, вам не придется вручную проверять «Все» в точке проверки.Вам все равно нужно будет проверить 1900 при фактической реализации, но теперь определенно будет способ избежать ошибок. что все-таки особый сценарий.

Кроме этого, DateTime.TryParse это правильный способ узнать, является ли строковое представление допустимой датой.

Что ж, никто не упомянул об этом, но почему бы не иметь символ для «всех», определенных где-то, и использовать это как в раскрывающейся инициализации, так и в сравнении?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top