Аномалия с Ruby Date.parse - PullRequest
       2

Аномалия с Ruby Date.parse

0 голосов
/ 18 октября 2011

Я обнаружил странное поведение в Ruby's Date.parse, задаваясь вопросом, может ли кто-нибудь пролить свет.

Сегодняшняя дата - 17 октября 2011 года.

irb(main):027:0> Date.parse("11-20").to_s
=> "2011-10-11"
irb(main):028:0> Date.parse("11/20").to_s
=> "2011-11-20"
irb(main):029:0> Date.parse("1-20").to_s
=> "2011-10-20"
irb(main):032:0> Date.parse("1/20").to_s
=> "2011-01-20"
irb(main):030:0> Date.parse("9-20").to_s
=> "2011-10-20"
irb(main):035:0> Date.parse("9/20").to_s
=> "2011-09-20"
irb(main):031:0> Date.parse("9-10").to_s
=> "2011-10-10"
irb(main):033:0> Date.parse("9/10").to_s
=> "2011-09-10"
irb(main):042:0> Date.parse("1-20-1997").to_s
ArgumentError: invalid date
        from /usr/lib/ruby/1.8/date.rb:956:in `new_by_frags'
        from /usr/lib/ruby/1.8/date.rb:1000:in `parse'
        from (irb):42
        from /usr/lib/ruby/1.8/date.rb:1578
irb(main):043:0> Date.parse("1/20/1997").to_s
=> "1997-01-20"

Я не уверенкак он интерпретирует дефис по сравнению с косой чертой.Слэш поведение имеет смысл для меня.Но поведение дефиса странное.Что анализирует в случае дефиса?

Ответы [ 2 ]

3 голосов
/ 18 октября 2011

Date.parse внутренне использует метод с именем _parse, который вы можете увидеть здесь:

http://www.ruby -doc.org / STDLIB-1.9.2 / libdoc / дата / RDoc / Date.html # способ-с-_parse

Ваш последний пример работает, если вы поставите год вперед:

Date.parse("1997-1-20") #=> "1997-01-20"

Это имеет смысл, если вы посмотрите на аргумент по умолчанию Date.parse, который равен str='-4712-01-01'. Форма дефиса без года - это странно, и я бы не стал ее использовать.

1 голос
/ 18 октября 2011

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

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