Преобразование в метку времени UTC

//parses some string into that format. datetime1 = datetime.strptime(somestring, "%Y-%m-%dT%H:%M:%S") //gets the seconds from the above date. timestamp1 = time.mktime(datetime1.timetuple()) //adds milliseconds to the above seconds. timeInMillis = int(timestamp1) * 1000 

Как мне (в любой момент в этом коде) включить дату в формат UTC? Я вспахал API за то, что кажется столетием, и не могу найти ничего, что я могу получить. Может ли кто-нибудь помочь? В настоящее время я превращаю его в восточное время, я верю (однако я нахожусь в GMT, но хочу UTC).

EDIT: Я дал ответ парню, который ближе всего к тому, что я наконец узнал.

 datetime1 = datetime.strptime(somestring, someformat) timeInSeconds = calendar.timegm(datetime1.utctimetuple()) timeInMillis = timeInSeconds * 1000 

🙂

4 Solutions collect form web for “Преобразование в метку времени UTC”

 def getDateAndTime(seconds=None): """ Converts seconds since the Epoch to a time tuple expressing UTC. When 'seconds' is not passed in, convert the current time instead. :Parameters: - `seconds`: time in seconds from the epoch. :Return: Time in UTC format. """ return time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime(seconds))` 

Это преобразует местное время в UTC

 time.mktime(time.localtime(calendar.timegm(utc_time))) 

http://feihonghsu.blogspot.com/2008/02/converting-from-local-time-to-utc.html

Если преобразование struct_time в seconds-then-the-epoch выполняется с использованием mktime, это преобразование находится в локальном часовом поясе . Невозможно сказать, что использовать какой-либо конкретный часовой пояс, даже не UTC. Стандартный пакет «время» всегда предполагает, что время в вашем местном часовом поясе.

datetime.utcfromtimestamp – это, вероятно, то, что вы ищете:

 >>> timestamp1 = time.mktime(datetime.now().timetuple()) >>> timestamp1 1256049553.0 >>> datetime.utcfromtimestamp(timestamp1) datetime.datetime(2009, 10, 20, 14, 39, 13) 

Я думаю, вы можете использовать метод utcoffset() :

 utc_time = datetime1 - datetime1.utcoffset() 

Документы приводят пример этого, используя метод astimezone() .

Кроме того, если вы собираетесь иметь дело с часовыми поясами , вы можете захотеть заглянуть в библиотеку PyTZ, в которой есть много полезных инструментов для преобразования времени datetime в различные часовые пояса (в том числе между EST и UTC)

С PyTZ:

 from datetime import datetime import pytz utc = pytz.utc eastern = pytz.timezone('US/Eastern') # Using datetime1 from the question datetime1 = datetime.strptime(somestring, "%Y-%m-%dT%H:%M:%S") # First, tell Python what timezone that string was in (you said Eastern) eastern_time = eastern.localize(datetime1) # Then convert it from Eastern to UTC utc_time = eastern_time.astimezone(utc) 

Вероятно, вам нужно одно из этих двух:

 import time import datetime from email.Utils import formatdate rightnow = time.time() utc = datetime.datetime.utcfromtimestamp(rightnow) print utc print formatdate(rightnow) 

Два выхода выглядят следующим образом:

 2009-10-20 14:46:52.725000 Tue, 20 Oct 2009 14:46:52 -0000 
  • Как с помощью python взять UTC datetime, автоопределить часовой пояс пользователей и преобразовать дату-время в желаемый формат?
  • Как преобразовать локальное время в UTC в Python?
  • Python - преобразовать строку datetime UTC в локальное время
  • получить метку времени UTC в python с датой
  • Преобразование даты и времени Python и utc без учета часового пояса / летнего времени
  • Преобразование datetime.date в метку времени UTC в Python
  • Python - от локального времени DST до UTC
  • Как получить строку даты UTC в Python?
  • Python - лучший язык программирования в мире.