Bienvenue sur IndexError.

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

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,754 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)
...