[utils] strftime_or_none: Workaround Python bug on Windows

CLoses #5185
This commit is contained in:
pukkandan 2022-10-09 04:18:28 +05:30
parent 2c98d99818
commit d509c1f5a3
No known key found for this signature in database
GPG Key ID: 7EEE9E1E817D0A39

View File

@ -2574,7 +2574,9 @@ def strftime_or_none(timestamp, date_format, default=None):
datetime_object = None datetime_object = None
try: try:
if isinstance(timestamp, (int, float)): # unix timestamp if isinstance(timestamp, (int, float)): # unix timestamp
datetime_object = datetime.datetime.utcfromtimestamp(timestamp) # 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
datetime_object = datetime.datetime.fromtimestamp(timestamp, datetime.timezone.utc)
elif isinstance(timestamp, str): # assume YYYYMMDD elif isinstance(timestamp, str): # assume YYYYMMDD
datetime_object = datetime.datetime.strptime(timestamp, '%Y%m%d') datetime_object = datetime.datetime.strptime(timestamp, '%Y%m%d')
date_format = re.sub( # Support %s on windows date_format = re.sub( # Support %s on windows