我想将纪元时间(以毫秒为单位)截断为小时开始或一天开始。我创建了以下功能,它们工作正常。我现在正在执行 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/