Python在大纪元时间增加了几天

时间:2015-12-17 02:49:32

标签: python unix-timestamp timedelta

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

#lssec -a lastupdate -s root -f /etc/security/passwd 2>/dev/null | cut -f2 -d=
1425917335

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

3 个答案:

答案 0 :(得分:12)

datetimefromtimestamptimedeltatimestamp之间更加轻松:

>>> import datetime
>>> orig = datetime.datetime.fromtimestamp(1425917335)
>>> new = orig + datetime.timedelta(days=90)
>>> print(new.timestamp())
1433693335.0

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

>>> import time
>>> print(time.mktime(new.timetuple()))

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

答案 1 :(得分:3)

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

DAY = 86400 # POSIX day (exact value)
future_time = epoch_time + 90*DAY

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

from datetime import datetime, timedelta

utc_time = datetime.utcfromtimestamp(epoch_time)
future_time = utc_time + timedelta(90)

不要将当地时间用于日期/时间算术(如果可以提供帮助,请避免天真fromtimestamp()mktime()naive_dt.timestamp()。要了解何时可能失败,请阅读Find if 24 hrs have passed between datetimes - Python

答案 2 :(得分:0)

您也可以dateutil.parser:

since24Hours = datetime.utcnow() - timedelta(days=1)
since24Hours=dateutil.parser.parse(str(since24Hours))
since24Hours = since24Hours.strftime('%s')
since24Hours=int(since24Hours)*1000