Project

General

Profile

Actions

Bug #14317

closed

Date.strptime(..., "%U") fails if first day of the week is not in the 0th week.

Added by jbake (Julien Bake) over 6 years ago. Updated almost 5 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
[ruby-core:84649]

Description

Date.new(2018,1,1)
=> Mon, 01 Jan 2018

Date.new(2018,1,1).strftime("%U %Y")
=> "00 2018"

Date.strptime("00 2018", "%U %Y")
ArgumentError: invalid date

Date.strptime("1 0 2018", "%u %U %Y")
=> Mon, 01 Jan 2018

i would expect to get the first valid date that is in the 0th week (1.1.2018) from Date.strptime("00 2018", "%U %Y") even if the first day (sunday) of the 0th week is not existing / in the last year.

Updated by jeremyevans0 (Jeremy Evans) almost 5 years ago

  • Status changed from Open to Rejected

I do not think this is a bug. It is reasonable for Date.strptime to assume a value of 0/Sunday for :cwday/%u if :wnum0/%U is specified without %u. In every other case where you specify %U without %u, you get a Sunday. I don't think it would make sense to be inconsistent and return a non-Sunday date for week 0.

If you really want to handle this differently, use Date._strptime and handle the resulting hash specially:

Date._strptime("0 2018", "%U %Y")
# => {:wnum0=>0, :year=>2018}

Date._strptime("1 0 2018", "%u %U %Y")
# => {:cwday=>1, :wnum0=>0, :year=>2018}
Actions

Also available in: Atom PDF

Like0
Like0