diff --git a/pydantic/datetime_parse.py b/pydantic/datetime_parse.py index 7bcb13a..f0070f7 100644 --- a/pydantic/datetime_parse.py +++ b/pydantic/datetime_parse.py @@ -91,7 +91,7 @@ def parse_date(value: Union[date, StrIntFloat]) -> date: return value number = get_numeric(value) - if number: + if number is not None: return from_unix_seconds(number).date() match = date_re.match(value) @@ -139,7 +139,7 @@ def parse_datetime(value: Union[datetime, StrIntFloat]) -> datetime: return value number = get_numeric(value) - if number: + if number is not None: return from_unix_seconds(number) match = datetime_re.match(value) diff --git a/tests/test_datetime_parse.py b/tests/test_datetime_parse.py index 1b35437..9423755 100644 --- a/tests/test_datetime_parse.py +++ b/tests/test_datetime_parse.py @@ -23,6 +23,7 @@ def create_tz(minutes): (1494012444.883309, date(2017, 5, 5)), ('1494012444', date(2017, 5, 5)), (1494012444, date(2017, 5, 5)), + (0, date(1970, 1, 1)), ('2012-04-23', date(2012, 4, 23)), ('2012-4-9', date(2012, 4, 9)), (date(2012, 4, 9), date(2012, 4, 9)), @@ -76,6 +77,7 @@ def test_time_parsing(value, result): ('2012-04-23T10:20:30.400+02', datetime(2012, 4, 23, 10, 20, 30, 400000, create_tz(120))), ('2012-04-23T10:20:30.400-02', datetime(2012, 4, 23, 10, 20, 30, 400000, create_tz(-120))), (datetime(2017, 5, 5), datetime(2017, 5, 5)), + (0, datetime(1970, 1, 1, 0, 0, 0, tzinfo=timezone.utc)), # Invalid inputs ('x20120423091500', ValueError), ('2012-04-56T09:15:90', ValueError),