从时间戳中减去天数

2024-03-29 10:07:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在计算结束时间戳,然后我必须从时间戳中减去天数(示例天数=10),然后将其转换为开始时间戳。 按如下方式计算开始时间戳和结束时间戳:

import datetime

end_timestamp = time.time()
end_time = datetime.datetime.fromtimestamp(end_timestamp)

start_date = end_time.date() - datetime.timedelta(days=10)
start_timestamp = datetime.datetime.strptime(str(start_date) + " " + str(end_time.time()), '%Y-%m-%d %H:%M:%S.%f').timestamp())

我只需要时间戳格式的开始和结束。 做这件事最好的方法是什么


Tags: import示例datetimedatetime方式时间days
1条回答
网友
1楼 · 发布于 2024-03-29 10:07:09

像这样的怎么样

from datetime import datetime, timedelta, timezone

t1 = datetime.now(timezone.utc) # end time
t0 = t1 - timedelta(10)         # start time

# if you need UNIX time:
start_ts, end_ts = t0.timestamp(), t1.timestamp()
print(start_ts, end_ts)
# 1608972059.652785 1609836059.652785

# if needed you can combine date and time from different datetime objects:
dt = datetime.combine(t0.date(), t1.time()).replace(tzinfo=timezone.utc)
print(dt.isoformat())
# 2020-12-26T08:40:59.652785+00:00

我显式地将时区设置为UTC,以避免由于Python将原始日期时间视为本地时间,而UNIX时间为UTC而导致的任何故障

如果使用UNIX时间(从纪元开始以秒为单位),还可以直接将天作为一天中秒数的倍数进行加减(86400):

import time

t1 = time.time()
t0 = t1 - 86400*10

dt = datetime.fromtimestamp(t0, tz=timezone.utc)
print(dt.isoformat())
# 2020-12-26T08:51:07.015367+00:00

相关问题 更多 >