Project

General

Profile

Bug #14241

Time.strptime() doesn't support the directive "%W".

Added by stsuboi (Sougo TSUBOI) 10 months ago. Updated 10 months ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.3p222 (2016-11-21 revision 56859) [x64-mingw32]
[ruby-core:84478]

Description

According to reference manual, Time.strptime() accepts the directive "%W" in a format string, but it seems not to be worked.
On the other hand, Date.strptime() accepts "%W" correctly.

C:>ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x64-mingw32]

C:>irb
irb(main):001:0> require "time"
=> true
irb(main):003:0> Time.strptime("2017 1", "%Y %W").strftime("%F")
=> "2017-01-01"
irb(main):004:0> Date.strptime("2017 1", "%Y %W").strftime("%F")
=> "2017-01-02"

History

#1 Updated by stsuboi (Sougo TSUBOI) 10 months ago

  • Description updated (diff)

#2 Updated by stsuboi (Sougo TSUBOI) 10 months ago

  • Description updated (diff)

#3 Updated by stsuboi (Sougo TSUBOI) 10 months ago

  • Description updated (diff)

#4 Updated by stsuboi (Sougo TSUBOI) 10 months ago

  • Subject changed from Time.strptime() doesn't support the directive "%W" in . to Time.strptime() doesn't support the directive "%W".

#5 [ruby-core:84485] Updated by Anonymous 10 months ago

To add to the report, the Time.strptime doesn't support any of the following directives

%w %W %j %u

basically, it doesn't support anything outputted from the Date._strptim that is not in the following hash keys
(https://github.com/ruby/ruby/blob/ruby_2_5/lib/time.rb#L448)

:year , :mon, :mday, :hour, :min, :sec, :sec_fraction, :zone

and the previous format directives produce various different keys like

:wnum1, :cwday, :wday, :yday

examples:

Date.strptime("2017 1 3", "%Y %W %u").strftime("%F")
=> "2017-01-04"
Time.strptime("2017 1 3", "%Y %W %u").strftime("%F")
=> "2017-01-01"
Date.strptime("2017 20", "%Y %j").strftime("%F")
=> "2017-01-20"
Time.strptime("2017 20", "%Y %j").strftime("%F")
=> "2017-01-01"

Also available in: Atom PDF