Python JSON Date объект Python Datetime - PullRequest
       3

Python JSON Date объект Python Datetime

1 голос
/ 17 октября 2019

У меня есть объект JSON с датой, которая возвращает

print row['ApplicationReceivedDateTime']

/Date(1454475600000)/

как мне обработать это с помощью модуля даты-времени pythons?

print type(row['ApplicationReceivedDateTime'])

возврат <type 'unicode'>

print repr(row['ApplicationReceivedDateTime'])

возврат u'/Date(1454475600000)/'

Ответы [ 3 ]

1 голос
/ 17 октября 2019

Это выглядит как миллисекунды. Попробуйте разделить на 1000.

import datetime as dt

>>> dt.datetime.fromtimestamp(1454475600000 / 1000)
datetime.datetime(2016, 2, 2, 21, 0)

Если для вашего вопроса указана дата в строковом формате, извлеките числовую часть, используя re.

date = '/Date(1454475600000)/'
>>> dt.datetime.fromtimestamp(int(re.findall(r"\d+", date)[0]) / 1000)
datetime.datetime(2016, 2, 2, 21, 0)
0 голосов
/ 17 октября 2019

Вы, вероятно, хотите

datetime.datetime.strptime(string_date, "%Y-%m-%d %H:%M:%S.%f")

И значения года, месяца, дня, часа, минуты, секунды и F, для которых вы можете написать ручную функцию для этого, как это

def generate_date_time_str(date_str):
"""Login to parse the date str"""
return date_str

date_str будет смотреть ссылку на это

"% Y-% m-% d% H:% M:% S.% f"

Тамне является модулем Python, непосредственно преобразующим любую произвольную дату в объект DateTime

0 голосов
/ 17 октября 2019

Вы можете использовать re, чтобы получить целочисленное значение, а затем использовать datetime.datetime.fromtimestamp, чтобы получить значение даты:

from datetime import datetime
import re

string_time = row['ApplicationReceivedDateTime']
parsed_time = int(re.search('\((\d+)\)', string_time)[1]) / 1e3 #1e3 == 1000
rcvd_date = datetime.fromtimestamp(parsed_time)

print(rcvd_date.strftime('%Y-%m-%d %H:%M:%S'))

Печать:

'2016-02-03 05:00:00'
...