Как проверить, был ли указан правильный формат даты - PullRequest
0 голосов
/ 29 апреля 2019

В настоящее время я работаю с «Обоснованным рубиистом» и у меня есть вопрос об упражнении, в котором предлагается проверить, указана ли предоставленная дата в формате «гггг-мм-дд», а не в «ггг-мм-дд»'.

У нас есть класс Ticket, и мы должны создать метод date=, который проверяет, соответствует ли предоставленная дата указанному выше формату.

Является ли .strftime правильным для использования здесь?

В конце метод должен вернуть дату в правильном формате и предоставить сообщение об ошибке для дат в неправильном формате, например так:

ticket = Ticket.new
ticket.date = "2013-11-12"
=> "2013-11-12"
ticket.date = "13-11-12"
=> "Please submit the date in the format 'yyyy-mm-dd'."

Может кто-нибудь указать, как я могвыполнить эти проверки в сроки?

Ответы [ 2 ]

4 голосов
/ 29 апреля 2019

Дата :: xmlschema строго по этому конкретному формату (попробуйте это в IRB):

  require 'date'

  Date.xmlschema("2013-11-12") #<Date: 2013-11-12 ((2456609j,0s,0n),+0s,2299161j)>

  #invalid month number:
  Date.xmlschema("2013-13-12") #<ArgumentError: invalid date>

  # 2 digit year:
  Date.xmlschema("13-11-12")  #<ArgumentError: invalid date>

  # no leap year:
  Date.xmlschema("2013-02-29")  #<ArgumentError: invalid date>
1 голос
/ 29 апреля 2019

Вы можете выдать ошибку пользователю, используя begin..rescue

require 'date'
begin
  Date.parse("31-02-2010")
rescue => e 
  p "#{e}"  #print your own custom messages and return accordingly
end  

Также напишите

rescue ArgumentError

Это будетвыбросить По умолчанию ошибка

ArgumentError (invalid date)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...