Fix unified_timestamp

This commit is contained in:
Elyse 2023-03-11 18:15:02 -06:00
parent 0ed9a73a73
commit a43ba2eff6
2 changed files with 7 additions and 2 deletions

View file

@ -421,6 +421,10 @@ def test_unified_timestamps(self):
self.assertEqual(unified_timestamp('Wednesday 31 December 1969 18:01:26 MDT'), 86)
self.assertEqual(unified_timestamp('12/31/1969 20:01:18 EDT', False), 78)
self.assertEqual(unified_timestamp('2023-03-09T18:01:33.646Z', with_milliseconds=True), 1678384893.646)
# ISO8601 spec says that if no timezone is specified, we should use local timezone;
# but yt-dlp uses UTC to keep things consistent
self.assertEqual(unified_timestamp('2023-03-11T06:48:34.008'), 1678517314)
def test_determine_ext(self):
self.assertEqual(determine_ext('http://example.com/foo/bar.mp4/?download'), 'mp4')

View file

@ -1868,8 +1868,9 @@ def unified_timestamp(date_str, day_first=True, with_milliseconds=False):
for expression in date_formats(day_first):
with contextlib.suppress(ValueError):
dt = datetime.datetime.strptime(date_str, expression) - timezone + datetime.timedelta(hours=pm_delta)
return calendar.timegm(dt.timetuple()) + (dt.microsecond / 1e6 if with_milliseconds else 0)
dt = datetime.datetime.strptime(date_str, expression) + datetime.timedelta(hours=pm_delta)
dt_tz_aware = dt.replace(tzinfo=datetime.timezone(timezone))
return dt_tz_aware.timestamp() if with_milliseconds else int(dt_tz_aware.timestamp())
timetuple = email.utils.parsedate_tz(date_str)
if timetuple: