Python 在纪元时间中添加天数
Python add days in epoch time
如何在 Python
中添加纪元时间
#lssec -a lastupdate -s root -f /etc/security/passwd 2>/dev/null | cut -f2 -d=
1425917335
上面的命令给我纪元时间,我想在那个时间里加上 90 天。如何在纪元时间中添加天数?
datetime
使 fromtimestamp
、timedelta
和 timestamp
之间变得容易:
>>> 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 的另一个论据。 :-)
如果输入是 POSIX 时间戳,那么要获得 +90 天:
DAY = 86400 # POSIX day (exact value)
future_time = epoch_time + 90*DAY
如果您想使用日期时间对象,请使用 UTC 时区:
from datetime import datetime, timedelta
utc_time = datetime.utcfromtimestamp(epoch_time)
future_time = utc_time + timedelta(90)
不要将本地时间用于 date/time 算法(如果可以的话,请避免天真 fromtimestamp()
、mktime()
、naive_dt.timestamp()
)。要了解它何时会失败,请阅读 Find if 24 hrs have passed between datetimes - Python.
你也可以dateutil.parser:
since24Hours = datetime.utcnow() - timedelta(days=1)
since24Hours=dateutil.parser.parse(str(since24Hours))
since24Hours = since24Hours.strftime('%s')
since24Hours=int(since24Hours)*1000
如何在 Python
中添加纪元时间#lssec -a lastupdate -s root -f /etc/security/passwd 2>/dev/null | cut -f2 -d=
1425917335
上面的命令给我纪元时间,我想在那个时间里加上 90 天。如何在纪元时间中添加天数?
datetime
使 fromtimestamp
、timedelta
和 timestamp
之间变得容易:
>>> 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 的另一个论据。 :-)
如果输入是 POSIX 时间戳,那么要获得 +90 天:
DAY = 86400 # POSIX day (exact value)
future_time = epoch_time + 90*DAY
如果您想使用日期时间对象,请使用 UTC 时区:
from datetime import datetime, timedelta
utc_time = datetime.utcfromtimestamp(epoch_time)
future_time = utc_time + timedelta(90)
不要将本地时间用于 date/time 算法(如果可以的话,请避免天真 fromtimestamp()
、mktime()
、naive_dt.timestamp()
)。要了解它何时会失败,请阅读 Find if 24 hrs have passed between datetimes - Python.
你也可以dateutil.parser:
since24Hours = datetime.utcnow() - timedelta(days=1)
since24Hours=dateutil.parser.parse(str(since24Hours))
since24Hours = since24Hours.strftime('%s')
since24Hours=int(since24Hours)*1000