Python json scraping Я получаю дату как 'DueDate': '/ Date (1539205200000) /'.Я не получаю в формате даты - PullRequest
0 голосов
/ 07 октября 2018

My Json File 'DueDate': '/Date(1539205200000)/', 'Bydate': '/Date(-62135578800000)/', 'NeedsAppointment': False

Код:

for o in odpg:
    try:
        duedate= o['DueDate']
        print(duedate)
    except:
        # Handle error

Получаю вывод как:

/Date(1539205200000)/

Требуемый вывод:

07/31/2018 

Ответы [ 2 ]

0 голосов
/ 07 октября 2018
import re
import datetime
json = {'DueDate': '/Date(1539205200000)/', 'Bydate': '/Date(-62135578800000)/', 'NeedsAppointment': False}
duedate = re.findall(r'[\d]+', json['DueDate'])
datetime.datetime.fromtimestamp(float(duedate[0][:10])).strftime("%d/%m/%Y")
0 голосов
/ 07 октября 2018

Вы уверены, что это правильный номер?Сначала я думал, что это эпоха , но это привело к слишком большому году;однако, забирая последние три 0 с произведения, я удивляюсь, длится ли эпоха в миллисекундах, а не в секундах (дикое волнообразное предположение):

>>> import time
>>> time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(1539205200000))
'50745-06-22 00:00:00'
>>> time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(1539205200))
'2018-10-10 21:00:00'

или

>>> import datetime
>>> datetime.datetime.fromtimestamp(1539205200000)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: year is out of range
>>> datetime.datetime.fromtimestamp(1539205200)
datetime.datetime(2018, 10, 11, 7, 0)

Чтобы получить желаемый результат, просто измените строку формата :

>>> # Assuming constant format "/Date(…)/", this also removes the trailing zeroes..
>>> funky_timestamp = int(o["duedate"][6:-5])
>>> datetime.datetime.fromtimestamp(funky_timestamp).strftime("%d/%m/%Y")
'11/10/2018'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...