You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
time.strptime does not properly convert out-of-bounds values #70467
bpo-23718: strptime() can produce invalid date with negative year day
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=<Date2016-02-12.05:19:15.613>created_at=<Date2016-02-03.16:02:51.498>labels= ['type-bug', 'library']
title='time.strptime does not properly convert out-of-bounds values'updated_at=<Date2016-02-12.05:21:10.901>user='https://bugs.python.org/iaslan'
As you can observe, tm_yday got a value of 368 instead of 3. It seems that the C function is not properly subtracting 365 or 366 days when converting from week 53 of a particular year which, according to ISO 8601 [1] and per python documentation [2]. Documentation explicitly says that: "The first week of the year is the week with the year's first Thursday in it".
Activity
iaslan commentedon Feb 3, 2016
There seems to be a bug in the time library when performing the following conversion:
"""
In [8]: mytime=time.strptime(str([2015, 53, 0]), '[%Y, %U, %w]')
In [9]: mytime
Out[9]: time.struct_time(tm_year=2016, tm_mon=1, tm_mday=3, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=368, tm_isdst=-1)
In [10]: time.strftime('%Y %U', mytime)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last) <ipython-input-10-c13538c08ea5> in <module>() ----> 1 time.strftime('%Y %U', mytime)ValueError: day of year out of range
"""
As you can observe, tm_yday got a value of 368 instead of 3. It seems that the C function is not properly subtracting 365 or 366 days when converting from week 53 of a particular year which, according to ISO 8601 [1] and per python documentation [2]. Documentation explicitly says that: "The first week of the year is the week with the year's first Thursday in it".
[1] https://en.wikipedia.org/wiki/ISO_8601#Week_dates
[2] https://docs.python.org/2/library/time.html
[-]Possible bug in time library[/-][+]time.strptime does not properly convert out-of-bounds values[/+]beng94 commentedon Feb 9, 2016
This is connected to http://bugs.python.org/issue23718
I submitted a patch that hopefully solves this problem.
ned-deily commentedon Feb 12, 2016
Thanks for the report. Closing this issue as a duplicate of bpo-23719.
ned-deily commentedon Feb 12, 2016
Make that bpo-23718