From: naruse@... Date: 2016-04-12T16:03:45+00:00 Subject: [ruby-core:74901] [Ruby trunk Bug#12273] Time.parse incorrectly parses Russian months Issue #12273 has been updated by Yui NARUSE. Viacheslav Ptsarev wrote: > Victor Shepelev wrote: > > I assume `Time.parse` is not localized to all world languages. > > So, it just ignores the "unidentified" part, replacing it with "current month" (and then fixes non-existent 31.04 into 1.05): > > > > ~~~ruby > > Time.parse('31 ������������ 2016') > > # => 2016-05-01 00:00:00 +0300 > > Time.parse('31') > > # => 2016-05-01 00:00:00 +0300 > > ~~~ > > Thanks. So what should I use to parse dates in Russian? Just replace Russian to English with gsub before parsing. ---------------------------------------- Bug #12273: Time.parse incorrectly parses Russian months https://bugs.ruby-lang.org/issues/12273#change-58026 * Author: Viacheslav Ptsarev * Status: Open * Priority: Normal * Assignee: * ruby -v: 2.3.0 * Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- When parsing dates in Russian where day number is 31, `Time.parse` returns `2016-05-01`. No matter what month or year is provided. 31 march 2016: ``` irb(main):003:0> require "time" => true irb(main):004:0> Time.parse "31 ���������� 2016" => 2016-05-01 00:00:00 +0300 irb(main):005:0> Time.parse "31 march 2016" => 2016-03-31 00:00:00 +0300 irb(main):006:0> Time.parse "31 mars 2016" => 2016-03-31 00:00:00 +0300 ``` 31 december 2013: ``` irb(main):013:0> Time.parse "31 �������������� 2013" => 2016-05-01 00:00:00 +0300 irb(main):014:0> Time.parse "31 december 2013" => 2013-12-31 00:00:00 +0400 ``` -- https://bugs.ruby-lang.org/ Unsubscribe: