我在下面有以下代码。
我想将 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])
原文由 user875139 发布,翻译遵循 CC BY-SA 4.0 许可协议
向上 舍入到最接近的 30 分钟:
该公式由@Mark Dickinson (for a different question) 建议。
输出
注意:如果输入是时区感知日期时间对象,例如
EASTERN_NOW
在你的情况下,那么你应该调用timezone.make_aware(rounded_dt.replace(tzinfo=None))
如果你想保留舍入本地时间并附加正确的 tzinfo,否则,如果四舍五入跨越 DST 边界,您可能会得到错误的时区信息。或者为避免因本地时间不明确而失败,请手动调用.localize()
: