Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

JSON: convertir date en liste d'integer

+3 votes

j'essaye en vain de remplacer une value dans un dict JSON. J'ai essayé quelque chose du genre:

if response.status_code == 200:
    data = response.json()
    if data:
        data['state']['lastchange'] = datetime.fromtimestamp(data['state']['lastchange'])
    else:
        # invalid query
        pass
    return data

Le problème est que data['state']['lastchange'] retourne maintenant:

 u'state': {u'lastchange': datetime.datetime(2015, 4, 15, 1, 10, 12),

Vous auriez une solution pour convertir ce timestamp en datetime?

demandé 15-Avr-2015 par barnumbirr (2,750 points)
edité 25-Mai-2016 par barnumbirr

Vous auriez une solution pour convertir ce timestamp en datetime?

Je ne suis pas sur de comprendre ton probleme. C'est déjà ce que tu fais, non ?

Je m'excuse, je n'ai pas été assez clair. J'aimerais que data['state']['lastchange'] retourne:

u'state': {u'lastchange': [2015, 4, 15, 1, 10, 12],

et non datetime.datetime(2015, 4, 15, 1, 10, 12)

Le titre de la question n'est pas clair non plus.

2 Réponses

+7 votes
 
Meilleure réponse

Je ne pense as qu'il y ait du built-in pour convertir une date en liste d'int.
Du coup :

if response.status_code == 200:
    data = response.json()
    if data:
        dt = datetime.fromtimestamp(data['state']['lastchange'])
        data['state']['lastchange'] = [dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second]
    else:
        # invalid query
        pass
    return data
répondu 15-Avr-2015 par jc (2,704 points)
sélectionné 15-Avr-2015 par barnumbirr

Merci, c'est exactement ce qu'il me fallait.

+1 vote

Autre solution pour transformer un timestamp :

list(time.localtime(ts))[:6]
répondu 16-Mai-2016 par yoch (2,514 points)
...