From f19a60cb81e0412642a67c9bc7212e3f36bb8d9e Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Fri, 16 Jun 2017 21:46:59 +0200 Subject: [PATCH] [#2228] Fix render_datetime error for year before 1900 There is a bug in Python in datetime.strftime where if a passed year is before 1900 it will raise a ValueError --- ckan/lib/helpers.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ckan/lib/helpers.py b/ckan/lib/helpers.py index a5fafbc84e1..77758d12cc6 100644 --- a/ckan/lib/helpers.py +++ b/ckan/lib/helpers.py @@ -1176,6 +1176,20 @@ def render_datetime(datetime_, date_format=None, with_hours=False): # if date_format was supplied we use it if date_format: + + # See http://bugs.python.org/issue1777412 + if datetime_.year < 1900: + date_format = date_format.replace('%y', str(datetime_.year)[-2:]) + date_format = date_format.replace('%Y', str(datetime_.year)) + + # "2017" can be any year, since it will be replaced with the one + # provided in "date_format" + datetime_ = datetime.datetime(2017, datetime_.month, datetime_.day, + datetime_.hour, datetime_.minute, + datetime_.second) + + return datetime_.strftime(date_format) + return datetime_.strftime(date_format) # the localised date return formatters.localised_nice_date(datetime_, show_date=True,