2017-02-01 2 views
1

J'ai un problème bizarre avec time.strptime dans Python 3.5.2. À des fins de test, je génère une chaîne de temps avec time.strftime, puis j'essaye d'analyser cette chaîne avec time.strptime, en utilisant la même chaîne de formatage dans les deux cas.Python 3.5.2 strptime ne peut pas lire la sortie de strftime lors de l'utilisation de la même chaîne de formatage?

Exemple de code illustrant ceci:

#!/usr/bin/env python 

import time 

if __name__ == '__main__': 
    time_test=time.strftime('%Y-%m-%dT%H:%M:%S%z', time.localtime()) 
    print (time_test) 
    test=time.strptime('%Y-%m-%dT%H:%M:%S%z', time_test) 
    print (time.strftime('%Y-%m-%d %H:%M:%S', test)) 

Les résultats que je vois:

2017-02-01T11:23:53-0800 
Traceback (most recent call last): 
    File "test_time.py", line 8, in <module> 
    test=time.strptime('%Y-%m-%dT%H:%M:%S%z', time_test) 
    File "/usr/local/Python-3.5.2/lib/python3.5/_strptime.py", line 504, in _strptime_time 
    tt = _strptime(data_string, format)[0] 
    File "/usr/local/Python-3.5.2/lib/python3.5/_strptime.py", line 343, in _strptime 
    (data_string, format)) 
ValueError: time data '%Y-%m-%dT%H:%M:%S%z' does not match format '2017-02-01T11:23:53-0800' 

Répondre

0

Oh: Je les arguments ai eu time.strptime inversé.

Le code correct ressemble à:

#!/usr/bin/env python 

import time 

if __name__ == '__main__': 
    time_test=time.strftime('%Y-%m-%dT%H:%M:%S%z', time.localtime()) 
    print (time_test) 
    test=time.strptime(time_test, '%Y-%m-%dT%H:%M:%S%z') 
    print (time.strftime('%Y-%m-%d %H:%M:%S', test))