Unix时间戳+1小时更换

问题描述 投票:0回答:1

我在Python中定义了两个辅助方法来设置开始时间和结束时间,并希望将其转换为unix时间戳(纪元):

def set_epoch_start():
    unix_epoch = datetime.utcfromtimestamp(0).replace(tzinfo=timezone.utc)
    now = datetime.now(tz=timezone.utc)
    new_time = now.replace(hour=17, minute=0, second=0, microsecond=0)
    seconds = (new_time - unix_epoch).total_seconds()
    return int(seconds)


def set_epoch_end():
    unix_epoch = datetime.utcfromtimestamp(0).replace(tzinfo=timezone.utc)
    now = datetime.now(tz=timezone.utc)
    new_time = now.replace(hour=23, minute=0, second=0, microsecond=0)
    seconds = (new_time - unix_epoch).total_seconds()
    return int(seconds)

到目前为止,我已经对小时值(17 和 23)进行了硬编码,但我希望开始时间的替换方法添加 +1 小时,结束时间的替换方法添加 2 小时。

在寻找这方面的帮助时,我遇到了 timedelta 即 timedelta(hours=2),但是如何将 timedelta 添加到上面的两个函数中?

python epoch timedelta
1个回答
0
投票

重构代码以消除重复。 那你现在就需要传入才能有稳定的参考:

from datetime import *

def epoch_offset(now, delta):
    unix_epoch = datetime.utcfromtimestamp(0).replace(tzinfo=timezone.utc)
    return int((now + delta - unix_epoch).total_seconds())

now = datetime.now(timezone.utc)
print(
        epoch_offset(now, timedelta(hours=1)),
        epoch_offset(now, timedelta(hours=2)),
)

和示例输出:

1724306428 1724302828
© www.soinside.com 2019 - 2024. All rights reserved.