Hacker News new | past | comments | ask | show | jobs | submit login

A line in one of my Python daemons has been crashing it repeatedly all day:

  isotime = datetime.strptime(time.get('title'), '%a %d %b %I:%M:%S %p').replace(year=YEAR, tzinfo=TZ).isoformat()
    ValueError: day is out of range for month
It's not mission-critical, so I'm just going to wait it out until tomorrow.

EDIT: Hacked it out.

  isotime = datetime.strptime(f"{time.get('title')} {YEAR} {tzoffset:+03d}00", '%a %d %b %I:%M:%S %p %Y %z').isoformat()

Interesting. Given the documentation of strptime, I would have expected that to not be possible at all (since constructing a datetime without a year isn't possible directly)

That strap time parsing doesn't fail under python 2.7.17 or 3.8.1

  Python 2.7.17 (default, Dec 31 2019, 23:59:25) 
  Type "help", "copyright", "credits" or "license" for more information.
  >>> from datetime import datetime
  >>> datetime.strptime('Sat 29 Feb 12:00:00 PM', '%a %d %b %I:%M:%S %p')
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  ValueError: day is out of range for month

This is because 1900 is the default year in datetime. 1900 was not a leap year.

I know, I'm just providing a counterexample to phoobahr.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact