如何让pytz默认使用当日闭市时间(23:59:59)处理日期?
实现方法
有两种简单的方式可以把日期解析为当日的闭市时间(23:59:59 UTC):
方法一:基于原解析结果调整时间
先解析出当日0点的时间对象,再通过加1天并减1秒得到当日结束时间:
import dateutil import pytz from datetime import timedelta utc = pytz.UTC # 解析得到当日0点的datetime对象 dt_start = dateutil.parser.parse('2024-10-31') # 调整为当日23:59:59 dt_close = utc.localize(dt_start + timedelta(days=1, seconds=-1)) print(dt_close)
输出:
2024-10-31 23:59:59+00:00
方法二:直接构造指定时间的datetime对象
如果输入是固定格式的日期字符串,可直接构造包含23:59:59的datetime对象再本地化:
import pytz from datetime import datetime utc = pytz.UTC # 直接构造当日23:59:59的datetime dt_close = utc.localize(datetime(2024, 10, 31, 23, 59, 59)) print(dt_close)
输出:
2024-10-31 23:59:59+00:00
如果日期字符串是动态输入的,可先解析日期部分再替换时间:
import dateutil import pytz from datetime import datetime utc = pytz.UTC date_str = '2024-10-31' # 解析日期部分提取年、月、日 parsed_date = dateutil.parser.parse(date_str).date() # 构造闭市时间 dt_close = utc.localize(datetime(parsed_date.year, parsed_date.month, parsed_date.day, 23, 59, 59)) print(dt_close)
内容的提问来源于stack exchange,提问作者Hari Addepalli
相关产品推荐
相关产品推荐

