gpt4 book ai didi

python - 在 Python 中四舍五入到最接近的 30 分钟

转载 作者:太空狗 更新时间:2023-10-29 17:39:38 25 4
gpt4 key购买 nike

我在下面有以下代码。

我想将 TIME 汇总到每小时中最接近的 30 分钟。例如:12:00PM 或 12:30PM 等。

EASTERN_NOW = timezone.localtime(timezone.now() + timedelta(minutes=30))

TIME = datetime.time(EASTERN_NOW.time().hour, EASTERN_NOW.time().minute).strftime(
VALID_TIME_FORMATS[2])

最佳答案

向上四舍五入到最接近的 30 分钟:

#!/usr/bin/env python3
from datetime import datetime, timedelta

def ceil_dt(dt, delta):
return dt + (datetime.min - dt) % delta

now = datetime.now()
print(now)
print(ceil_dt(now, timedelta(minutes=30)))

The formula is suggested by @Mark Dickinson (for a different question) .

输出

2015-09-22 19:08:34.839915
2015-09-22 19:30:00

注意:如果输入是时区感知日期时间对象,例如 EASTERN_NOW 在您的情况下,那么您应该调用 timezone.make_aware(rounded_dt.replace(tzinfo=None)) 如果您想保留四舍五入的本地时间并附加正确的 tzinfo,否则如果四舍五入跨越 DST 边界,您可能会得到错误的时区信息。或者为避免因本地时间不明确而失败,请手动调用 .localize():

localize = getattr(rounded_dt.tzinfo, 'localize', None)
if localize:
rounded_dt = localize(rounded_dt.replace(tzinfo=None),
is_dst=bool(rounded_dt.dst()))

关于python - 在 Python 中四舍五入到最接近的 30 分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32723150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com