Python在纪元时间增加了几天

Sat*_*ish 8 python timedelta unix-timestamp

如何在Python中添加纪元时间的天数

#lssec -a lastupdate -s root -f /etc/security/passwd 2>/dev/null | cut -f2 -d=
1425917335
Run Code Online (Sandbox Code Playgroud)

上面的命令给了我纪元时间我想在那段时间内添加90天.如何在纪元时间添加天数?

Sha*_*ger 13

datetime让它之间很容易fromtimestamp,timedelta并且timestamp:

>>> import datetime
>>> orig = datetime.datetime.fromtimestamp(1425917335)
>>> new = orig + datetime.timedelta(days=90)
>>> print(new.timestamp())
1433693335.0
Run Code Online (Sandbox Code Playgroud)

在Python 3.2及更早版本中,datetime对象没有.timestamp()方法,因此您必须将最后一行更改为效率较低的两阶段转换:

>>> import time
>>> print(time.mktime(new.timetuple()))
Run Code Online (Sandbox Code Playgroud)

两级转换比.timestamp()我的机器长约10倍,耗时约2.5μs,相比约为270 ns .timestamp(); 如果你没有做太多的事情,你可能仍然是微不足道的,但如果你需要做很多事情,那么考虑使用现代Python的另一个论点.:-)

  • @Satish:等等,什么?如果没有调用`.timestamp()`,你就不可能有同样的错误,我的建议是用`time.mktime(new.timetuple())`替换`new.timestamp()`. (3认同)

jfs*_*jfs 5

如果输入是 POSIX 时间戳,则获得 +90 天:

DAY = 86400 # POSIX day (exact value)
future_time = epoch_time + 90*DAY
Run Code Online (Sandbox Code Playgroud)

如果要使用 datetime 对象,请使用 UTC 时区:

from datetime import datetime, timedelta

utc_time = datetime.utcfromtimestamp(epoch_time)
future_time = utc_time + timedelta(90)
Run Code Online (Sandbox Code Playgroud)

不要将本地时间用于日期/时间算术(如果可以,请避免使用 naive fromtimestamp(), )。要了解它何时可能会失败,请阅读查找日期时间之间是否已过去 24 小时 - Pythonmktime()naive_dt.timestamp()