2013-11-13 2 views
1

Я тестирую этот API RESTFul whois.Временная метка в файле json

Я смущен, если дата в формате unix timestamp. Но я не думаю, что это так, потому что:

print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int("1340578800000"))) 

дал мне:

ValueError: timestamp out of range for platform time_t 

дата можно найти здесь

updated: 1340578800000 

в этом файле:

http://www.restfulwhois.com/example 

Я не могу найти электронной почты или поддержки на веб-сайте, поэтому я спрашиваю здесь. Как вы думаете?

ответ

1

Значение у вас есть количество миллисекунд с начала эпохи и time.localtime ожидает количество секунд.

[от gmtime()]: Преобразование времени в секундах с начала эпохи ...

Обратите внимание, что в то время как строка вы восстанавливаете не отличается между этими двумя, в более общем случае решение , вероятно,, чтобы сделать разделение с плавающей точкой, чтобы сохранить миллисекунды.

>>> time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int("1340578800000")/1000)) 
'2012-06-24 18:00:00' 
>>> time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int("1340578800000")/1000.)) 
'2012-06-24 18:00:00' 
2

Это миллисекунды с начала эпохи:

>>> print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int("1340578800000")/1000)) 
2012-06-25 03:00:00 

Большинство ofted вы получите миллисекунды от JavaScript, возвращаемый getTime.

Остерегайтесь часовых поясов и расхождений по местному времени, так как покажите симуляционные, но разные ответы в этой теме. Для даты UTC использования gmtime вместо localtime:

>>> print time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(int("1340578800000")/1000)) 
2012-06-24 23:00:00 
1

Python time.localtime ожидает, что метка времени быть в секундах, вы передаете его в миллисекундах, так что вам придется разделить на 1000, чтобы получить его в считанные секунды.

Изменить код:

>>> print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int("1340578800000")/1000)) 
'2012-06-24 20:00:00' 
1

Это в миллисекунды, а не секунды. Просто разделить его на 1000 перед форматированием:

>>> time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int("1340578800000")/1000)) 
'2012-06-24 20:00:00' 
Смежные вопросы