2014-07-24 2 views
3

В Javascript, Date.prototype.toISOString дает ISO 8601 UTC DATETIME строка:Что такое эквивалент Python Javascript `Date.prototype.toISOString`?

new Date().toISOString() 
// "2014-07-24T00:19:37.439Z" 

Есть ли функция Python с поведением, которое соответствует в JavaScript?


Попытки:

Питона datetime.datetime.isoformat похож, но не совсем то же самое:

datetime.datetime.now().isoformat() 
// '2014-07-24T00:19:37.439728' 

Использование pytz я могу по крайней мере, сделать UTC Явный:

pytz.utc.localize(datetime.now()).isoformat()) 
// '2014-07-24T00:19:37.439728+00:00' 
+1

Нет, у Python нет встроенной функции, которая делает то, что вы хотите здесь, вам нужно написать свой собственный или использовать что-то вроде [DateTime] (https://pypi.python.org/pypi/DateTime/4.0 .1), который абсолютно и полностью переполняет то, что вы хотите сделать. (прокрутите вниз до методов ISO8601 и HTML4). На самом деле, два приведенных ниже ответа - это именно то, что вы хотите сделать, просто измените часовой пояс. – metatoaster

+0

^Это должен быть ответ, +1 –

ответ

0

Вы можете используйте этот код:

import datetime 
now = datetime.datetime.now() 
iso_time = now.strftime("%Y-%m-%dT%H:%M:%SZ") 
+0

Итак, это работает в конкретном случае 'datetime.now()', но этот подход не будет работать с дат-временем, датируемым часовым поясом, верно? –

2

Я попытался отформатировать строку точно так, как она находится в выводе javascript.

from datetime import datetime 

def iso_format(dt): 
    try: 
     utc = dt + dt.utcoffset() 
    except TypeError as e: 
     utc = dt 
    isostring = datetime.strftime(utc, '%Y-%m-%dT%H:%M:%S.{0}Z') 
    return isostring.format(int(round(utc.microsecond/1000.0))) 

print iso_format(datetime.now()) 
#"2014-07-24T00:19:37.439Z" 
+0

Это, как и другой ответ, зависит от даты и времени, не имеющих привязанной к ней информации о часовом поясе. Я ищу что-то более общее. –

+1

Для учета объекта '' 'datetime'', определенного в часовом поясе, первым оператором в функции может быть' '' 'utc = dt + dt.utcoffset()' ''. Затем последующие операторы будут работать на '' 'utc''' вместо' '' dt'''. – wwii

0

Есть функция Python с поведением, которое соответствует в JavaScript?

Не в стандартной библиотеке, но вы можете создавать свои собственные.

 Смежные вопросы

  • Нет связанных вопросов^_^