mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2026-06-29 14:14:54 +00:00
Compare commits
No commits in common. "0fcc7521b76dc779246936fc7a42e437e2546f7e" and "5b6ad82daef68b7f37531a307c36050b0941f1e5" have entirely different histories.
0fcc7521b7
...
5b6ad82dae
@ -398,7 +398,7 @@ class TestUtil(unittest.TestCase):
|
|||||||
self.assertEqual(datetime_round(dt.datetime.strptime('1820-05-12T01:23:45Z', '%Y-%m-%dT%H:%M:%SZ')),
|
self.assertEqual(datetime_round(dt.datetime.strptime('1820-05-12T01:23:45Z', '%Y-%m-%dT%H:%M:%SZ')),
|
||||||
dt.datetime(1820, 5, 12, tzinfo=dt.timezone.utc))
|
dt.datetime(1820, 5, 12, tzinfo=dt.timezone.utc))
|
||||||
self.assertEqual(datetime_round(dt.datetime.strptime('1969-12-31T23:34:45Z', '%Y-%m-%dT%H:%M:%SZ'), 'hour'),
|
self.assertEqual(datetime_round(dt.datetime.strptime('1969-12-31T23:34:45Z', '%Y-%m-%dT%H:%M:%SZ'), 'hour'),
|
||||||
dt.datetime(1970, 1, 1, 0, tzinfo=dt.timezone.utc))
|
dt.datetime(1970, 1, 1, tzinfo=dt.timezone.utc))
|
||||||
self.assertEqual(datetime_round(dt.datetime.strptime('2024-12-25T01:23:45Z', '%Y-%m-%dT%H:%M:%SZ'), 'minute'),
|
self.assertEqual(datetime_round(dt.datetime.strptime('2024-12-25T01:23:45Z', '%Y-%m-%dT%H:%M:%SZ'), 'minute'),
|
||||||
dt.datetime(2024, 12, 25, 1, 24, tzinfo=dt.timezone.utc))
|
dt.datetime(2024, 12, 25, 1, 24, tzinfo=dt.timezone.utc))
|
||||||
self.assertEqual(datetime_round(dt.datetime.strptime('2024-12-25T01:23:45.123Z', '%Y-%m-%dT%H:%M:%S.%fZ'), 'second'),
|
self.assertEqual(datetime_round(dt.datetime.strptime('2024-12-25T01:23:45.123Z', '%Y-%m-%dT%H:%M:%S.%fZ'), 'second'),
|
||||||
|
|||||||
@ -1365,9 +1365,12 @@ def datetime_add_months(dt_, months):
|
|||||||
|
|
||||||
|
|
||||||
def datetime_from_timestamp(timestamp):
|
def datetime_from_timestamp(timestamp):
|
||||||
# Calling dt.datetime.fromtimestamp with negative timestamps throws error in Windows
|
# Working around out-of-range timestamp values (e.g. negative ones on Windows,
|
||||||
# Ref: https://github.com/yt-dlp/yt-dlp/issues/5185, https://github.com/python/cpython/issues/94414,
|
# see http://bugs.python.org/issue1646728)
|
||||||
# https://github.com/yt-dlp/yt-dlp/issues/6706#issuecomment-1496842642
|
# Using naive datetime here can break timestamp() in Windows
|
||||||
|
# Ref: https://github.com/yt-dlp/yt-dlp/issues/5185, https://github.com/python/cpython/issues/94414
|
||||||
|
# Also, dt.datetime.fromtimestamp breaks for negative timestamps
|
||||||
|
# Ref: https://github.com/yt-dlp/yt-dlp/issues/6706#issuecomment-1496842642
|
||||||
return (dt.datetime.fromtimestamp(0, dt.timezone.utc)
|
return (dt.datetime.fromtimestamp(0, dt.timezone.utc)
|
||||||
+ dt.timedelta(seconds=timestamp))
|
+ dt.timedelta(seconds=timestamp))
|
||||||
|
|
||||||
@ -1387,7 +1390,7 @@ def datetime_round(dt_, precision='day'):
|
|||||||
'second': 1,
|
'second': 1,
|
||||||
}
|
}
|
||||||
roundto = lambda x, n: ((x + n / 2) // n) * n
|
roundto = lambda x, n: ((x + n / 2) // n) * n
|
||||||
timestamp = roundto(calendar.timegm(dt_.timetuple()) + dt_.microsecond / time_scale, unit_seconds[precision])
|
timestamp = roundto(calendar.timegm(dt_.timetuple()) * time_scale + dt_.microsecond, unit_seconds[precision] * time_scale) / time_scale
|
||||||
return datetime_from_timestamp(timestamp)
|
return datetime_from_timestamp(timestamp)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user