python - 如何舍入日期时间对象的分钟

标签 python datetime rounding

我有一个使用 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/

相关文章:

python - 多个 http get 和 post

Python divmod 用于 pandas Dataframe 中的每个值

swift - NSDecimalNumber(x).intValue 返回 -2、0、15 和 199,具体取决于 x 中的小数位数 (x = 199.999...5)

vba - 为什么CLng会产生不同的结果?

c++ - 四舍五入 - .5 - sprintf

javascript - 将 chessbord.js 与 Flask 集成

python - 如何使用 Pandas 从 DataFrame 或 np.array 中的列条目创建字典

php - 在php中转换日期和时间

c# - 我的 Nullable DateTime View 因 Null 而失败

java - Jodatime IllegalInstantException 异常