Skip to content

Commit 6ff5cd1

Browse files
authored
Merge pull request #1740 from nicolary/hf-zfill_4_year_dump_date
_dump_date zfills years < 4 digits
2 parents 8568bed + b70df18 commit 6ff5cd1

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

CHANGES.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ Unreleased
1010
- Only allow a single access control allow origin value. :pr:`1723`
1111
- Fix crash when trying to parse a non-existent Content Security
1212
Policy header. :pr:`1731`
13+
- ``http_date`` zero fills years < 1000 to always output four digits.
14+
:issue:`1739`
1315

1416

1517
Version 1.0.0

src/werkzeug/http.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -865,7 +865,7 @@ def _dump_date(d, delim):
865865
d = d.utctimetuple()
866866
elif isinstance(d, (integer_types, float)):
867867
d = gmtime(d)
868-
return "%s, %02d%s%s%s%s %02d:%02d:%02d GMT" % (
868+
return "%s, %02d%s%s%s%04d %02d:%02d:%02d GMT" % (
869869
("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")[d.tm_wday],
870870
d.tm_mday,
871871
delim,
@@ -884,7 +884,7 @@ def _dump_date(d, delim):
884884
"Dec",
885885
)[d.tm_mon - 1],
886886
delim,
887-
str(d.tm_year),
887+
d.tm_year,
888888
d.tm_hour,
889889
d.tm_min,
890890
d.tm_sec,

tests/test_http.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,18 @@ def test_content_range_parsing(self):
668668
assert rv.length == 100
669669
assert rv.units == "bytes"
670670

671+
@pytest.mark.parametrize(
672+
("args", "expected"),
673+
(
674+
((1, 1, 1), "Mon, 01 Jan 0001 00:00:00 GMT"),
675+
((999, 1, 1), "Tue, 01 Jan 0999 00:00:00 GMT"),
676+
((1000, 1, 1), "Wed, 01 Jan 1000 00:00:00 GMT"),
677+
((2020, 1, 1), "Wed, 01 Jan 2020 00:00:00 GMT"),
678+
),
679+
)
680+
def test_http_date_lt_1000(self, args, expected):
681+
assert http.http_date(datetime(*args)) == expected
682+
671683

672684
class TestRegression(object):
673685
def test_best_match_works(self):

0 commit comments

Comments
 (0)