Ruby: Как проверить, является ли строка допустимым временем?

Я вытягиваю данные из канала, что я не имею никакого контроля, и я должен проверить, является ли строка, которую мне дают, допустимым временем.

Большую часть времени я правильно отправляюсь что-то как "2:35" или "15:41" кроме других времен, это - вещи как AM или "PM" (и никакие числа)..., таким образом, я в конечном счете просто должен проигнорировать их.

Так, как я могу проверить, являются ли данные допустимым временем?

6
задан Shpigford 11 May 2010 в 13:02
поделиться

2 ответа

Использование Time.parse () является не лучшим решением , как показано в примере комментариев.

Я оставлю ответ здесь по «историческим причинам», чтобы оставить комментарии и в качестве предупреждения для будущих читателей!


Вы можете использовать Time.parse () и проверить исключение ArgumentError на недопустимое время.

Дополнительным преимуществом является то, что у вас также есть время в удобном для использования формате, если он действителен!

7
ответ дан 8 December 2019 в 15:59
поделиться

Вы точно не указали, что вы считаете допустимым временем (например, должны ли вы принимать дополнительные секунды), поэтому вот одно предположение:

data =~ /^([01]?[0-9]|2[0-3])\:[0-5][0-9]$/
8
ответ дан 8 December 2019 в 15:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: