【问题标题】:Subtract days from timestamp python从时间戳python中减去天数
【发布时间】:2021-01-05 07:24:30
【问题描述】:

我正在计算结束时间戳,然后我必须从时间戳中减去天数(例如天数 = 10),然后将其转换为开始时间戳。 像这样计算 start_timestamp 和 end_timestamp:

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())

我只需要时间戳格式的开始和结束。 最好的 Pythonic 方法是什么?

【问题讨论】:

  • 只需从end_timestamp 中减去天数。 start_timestamp = end_timestamp - datetime.timedelta(days=10)
  • @techytushar 我已经更改了问题(代码部分),请看一下。我想要两个时间戳,它都提供日期时间格式。

标签: python python-3.x datetime time


【解决方案1】:

类似的东西呢

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

【讨论】:

    猜你喜欢
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 2018-10-17
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    相关资源
    最近更新 更多