我在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 添加到上面的两个函数中?
重构代码以消除重复。 那你现在就需要传入才能有稳定的参考:
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