2016-11-30 2 views
3

Я разборе файла JSON в Python 2.7, который включает в себяКак преобразовать дату JSON в специальный формат в Python?

"TimestampUtc":"\/Date(1477393888000)\/ 

и я хочу, чтобы разобрать этот файл и преобразовать дату в:

8:11 a.m. Oct. 25, 2016 

оригинальный часового пояса в США и I хотите получить точно такой же результат. Но этот формат не так распространен, и другие подобные вопросы не отвечают на него. Есть ли идеи, как это сделать?

+0

Возможный дубликат [Как отформатировать дату Microsoft JSON] (http://stackoverflow.com/questions/206384/how-do-i-format-a-microsoft -json-date) –

+0

Возможный дубликат: [Преобразование даты ASP.Net JSON в дату и время Python] (http://stackoverflow.com/questions/18039625/converting-asp-net-json-date-into-python-datetime) –

+0

Из того, что я просил, отличается от вышеупомянутых вопросов. –

ответ

4

вы можете попробовать: обновление Формат::

>>> from datetime import datetime 
>>> d = "1467717221000" 
>>> d = int(d[:10]) 
>>> datetime.fromtimestamp(d).strftime('%Y-%m-%d %I:%M:%S %p') 
'2016-07-05 04:43:41 PM' 

редактировать

>>> datetime.fromtimestamp(d).strftime(' %I:%M %p %b. %d, %y').replace("PM","p.m.").replace("AM","a.m.") 
' 04:43 p.m. 07. 05, 16' 
+0

@ Harsha Biyani: Спасибо, результат должен быть как «9:19 утра 28 октября 2016 года». –

+0

, чтобы вы не смогли изменить формат, изменив последовательность. – Harsha

+0

@mk_sch: формат также изменяется для u .. – Harsha

0

Я думаю, что единица вашей метки времени равна миллисекундам. Итак, разделите его на 1000, затем получите 1467717221. И используя модуль времени времени для получения времени. Затем преобразуйте его в формат по номеру strftime.

from datetime import datetime 

newTimeString = datetime.utcfromtimestamp(1467717221).strftime('%I:%M %p %b. %d, %Y') 

вы можете найти форматирование здесь (https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior)

+0

@ Халк: Благодарю вас, я попробовал это, правильный вывод «9:19 утра 28 октября 2016 года», но под вашим кодом это: «11:13 AM 05.07.2016» –

2

Это:

import datetime 
import re 


TimestampUtc = "\/Date(1467717221000)\/" 

TimestampUtc = re.split('\(|\)', TimestampUtc)[1][:10] 
date = datetime.datetime.fromtimestamp(int(TimestampUtc)) 
print date 
print date.strftime('%I:%M %p %b. %d, %Y') 
print date.strftime('%I:%M %p %b. %d, %Y').replace('AM', 'a.m.').replace('PM', 'p.m.') 

Выход:

2016-07-05 19:13:41 
07:13 PM Jul. 05, 2016 
07:13 p.m. Jul. 05, 2016 
+0

@ kissbug: Большое вам спасибо, это самый близкий ответ на мой вопрос вопрос, только один вопрос, выход должен быть «9:19 утра 28 октября 2016 года», но в вашем коде это другое. Кроме того, я хочу иметь 9 вместо 09. Как я могу это сделать? –

+1

[http: //strftime.org/](http://strftime.org/) является форматом ** strftime **, и вы можете использовать **% - I ** вместо **% I **, другой часовой пояс запустите код, вы получите разное местное время – solideo

+0

Я выполнил ваш код для «TimestampUtc =" \/Date (1477657148000) \/", а вывод« 02:19 PM 28 октября 2016 », но это должно быть« 9 : 19:00 28 октября 2016 г. ». Разница предельная, но она не совсем такая же. –

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

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