#python #date #timestamp
#python #Дата #временная метка
Вопрос:
у меня есть временные метки в следующем формате:
2011 February 2nd 13h 27min 21s
110202 132721
Я хочу преобразовать 110202 132721 в соответствующую временную метку Linux: 1296682041
Есть ли какой-либо быстрый эффективный способ добиться этого?
Ответ №1:
Что-то вроде
>>> s = "110202 132721"
>>> print time.mktime(time.strptime(s, "%y%m%d %H%M%S"))
1296653241.0
Это интерпретирует время как местное (ваш текущий часовой пояс).
Комментарии:
1. @AYBABTU: Заглавная буква
Y
будет означать четырехзначный год. Поскольку строкаs
содержит двузначный год, мы должны использовать здесь нижний регистрy
. Смотрите ideone.com/uv1jR6 — первый
Ответ №2:
Чтобы создать временную метку Unix, используйте time.mktime(t)
функцию. Для этого требуется time.struct_time
объект.
Определение объектов можно посмотреть здесь. Итак, вам просто нужно проанализировать дату и время и поместить их в объект, прежде чем передавать его mktime()
функции
Ответ №3:
Без вашей информации о часовом поясе это не «соответствующая» временная метка unix.
После нескольких попыток я предположил, что вы могли бы находиться на тихоокеанском побережье США, поэтому вы должны четко определить это в своем скрипте:
from datetime import datetime
import pytz
import calendar
a = "110202 132721"
yourTZ = 'America/Los_Angeles'
calendar.timegm(pytz.timezone(yourTZ).localize(datetime.strptime(a, '%y%m%d %H%M%S')).utctimetuple())
# returns 1296682041