python преобразует дату и время в временную карту Linux

#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 — первый print работает, второй выдает исключение.

Ответ №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