python - 将纪元时间截断为小时/天的开始

标签 python epoch

我想将纪元时间(以毫秒为单位)截断为小时开始或一天开始。我创建了以下功能,它们工作正常。我现在正在执行 3 个步骤的过程 - 将 input_epoch 转换为日期时间 -> 截断日期时间 -> 将日期时间转换回 epoch_time。有没有办法直接截断纪元时间(而不将其转换为日期时间对象)? 有什么建议吗?

from datetime import datetime

def to_epoch_millis(dt):
    return int((dt - datetime.utcfromtimestamp(0)).total_seconds() * 1000.0)

def truncate_to_hour(dt):
    return dt.replace(microsecond=0, second=0, minute=0)

def truncate_to_day(dt):
    return dt.replace(microsecond=0, second=0, minute=0, hour=0)


# input - 1647548963623 - Thu Mar 17 2022 20:29:23
input_epoch = 1647548963623
print(to_epoch_millis(
    truncate_to_day(datetime.utcfromtimestamp(input_epoch / 1000))))  # 1647475200000 - Thu Mar 17 2022 00:00:00
print(to_epoch_millis(
    truncate_to_hour(datetime.utcfromtimestamp(input_epoch / 1000))))  # 1647547200000 - Thu Mar 17 2022 20:00:00

最佳答案

一天有 86400000 毫秒。 一小时有 3600000 毫秒。

求模并减去它,这样您就可以获得一天或小时的开始。 您实际上是在整数除法中删除剩余的毫秒,向下舍入。

input_epoch = 1647548963623

truncate_day_epoch = input_epoch - (input_epoch % 86400000)

truncate_hour_epoch = input_epoch - (input_epoch % 3600000)

关于python - 将纪元时间截断为小时/天的开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71518816/

相关文章:

dart - 如何在 Dart 中获取时间戳?

python - Pandas:使用 python 检查值是否为纪元时间

python - 使用子包设置 python 包的正确方法

python - 如何在 pygame 中使用相同的类创建独立工作的重复 Sprite ?

python - 如何使用 for 循环在 Dash + Python 中显示多个图表?

python - 为什么我的神经网络不起作用?

python - 禁用 WTForms SelectField 中的选项之一

time - AWK 命令将纪元时间更改为日期并在同一行上列出纪元

python-3.x - 日期时间字符串到纪元 : pandas dataframe

unix - 以不同语言打印大纪元时间