我有一个使用 strptime()
生成的 datetime
对象。
>>> tm
datetime.datetime(2010, 6, 10, 3, 56, 23)
我需要做的是将分钟舍入到最接近的第 10 分钟。到目前为止,我一直在做的是获取分钟值并在其上使用 round()。
min = round(tm.minute, -1)
但是,与上面的示例一样,当分钟值大于 56 时,它会给出无效时间。即:3:60
有什么更好的方法来做到这一点? datetime
支持吗?
最佳答案
这将使存储在 tm 中的 datetime
对象的“地板”四舍五入到 tm
之前的 10 分钟标记。
tm = tm - datetime.timedelta(minutes=tm.minute % 10,
seconds=tm.second,
microseconds=tm.microsecond)
如果您希望经典四舍五入到最接近的 10 分钟标记,请执行以下操作:
discard = datetime.timedelta(minutes=tm.minute % 10,
seconds=tm.second,
microseconds=tm.microsecond)
tm -= discard
if discard >= datetime.timedelta(minutes=5):
tm += datetime.timedelta(minutes=10)
或者这个:
tm += datetime.timedelta(minutes=5)
tm -= datetime.timedelta(minutes=tm.minute % 10,
seconds=tm.second,
microseconds=tm.microsecond)
关于python - 如何舍入日期时间对象的分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3463930/