Как добавить дни в эпохальное время в Python
#lssec -a lastupdate -s root -f /etc/security/passwd 2>/dev/null | cut -f2 -d=
1425917335
Приведенная выше команда дает мне время эпохи, я хочу добавить 90 дней за это время. как добавить дни в эпоху?
3 ответа
datetime
упрощает поиск между fromtimestamp
, {{ X2}} и 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()))
Двухэтапное преобразование занимает ~ 10 раз дольше, чем .timestamp()
на моей машине, ~ 2,5 мкс против ~ 270 нс для .timestamp()
; по общему признанию все еще тривиально, если вы не делаете это много, но если вам нужно сделать это много, рассмотрите это как еще один аргумент для использования современного Python. :-)
Если введена метка времени 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()
, если можете помочь). Чтобы понять, когда может произойти сбой, прочитайте Узнайте, прошло ли 24 часа между датами - Python.
Вы можете также dateutil.parser:
since24Hours = datetime.utcnow() - timedelta(days=1)
since24Hours=dateutil.parser.parse(str(since24Hours))
since24Hours = since24Hours.strftime('%s')
since24Hours=int(since24Hours)*1000
Похожие вопросы
Связанные вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.