J'ai le format de chaîne suivant (Python 3.6):

'2018-11-19T10:04:57.426872'

Je l'obtiens comme paramètre de mon script. Je veux obtenir la date 'YYYY-MM-DD' et l'heure 'HH:MM'

J'ai essayé de le convertir avec:

from datetime import datetime
if __name__ == '__main__':
    start_timestamp = sys.argv[1]
    start_date =  datetime.strptime(sys.argv[1], '%Y-%m-%d')
    start_time =  datetime.strptime(sys.argv[1], '%H:%M')

Mais cela donne:

ValueError: unconverted data remains: T10:04:57.426872

Dans l'exemple ci-dessus , je veux voir :

start_date = '2018-11-19'
start_time = '10:04'
-1
Luis 19 nov. 2018 à 14:53

3 réponses

Meilleure réponse

Comme la date semble être au format ISO, une simple

start = datetime.datetime.fromisoformat(text)

L'analysera correctement. De là, vous pouvez obtenir votre date et heure avec

start_date = start.strftime("%Y-%m-%d")
start_time = start.strftime("%H:%M")

Modifier :

Pour Python <3.7, vous pouvez utiliser ce format:

start = datetime.datetime.strptime(text, "%Y-%m-%dT%H:%M:%S.%f")

Pour la confusion datetime "en double": j'ai utilisé import datetime. Si vous utilisez from datetime import datetime, vous pouvez vous débarrasser des datetime. supplémentaires

1
Christian König 19 nov. 2018 à 12:25

Vous devez analyser la chaîne entière en un seul objet datetime, puis extraire vos valeurs requises à partir de cela.

dt = datetime.datetime.strptime('2018-11-19T10:04:57.426872', '%Y-%m-%dT%H:%M:%S.%f')
d = dt.date()
t = dt.time()
print(d.strftime('%Y-%m-%d'))
print(t.strftime('%H:%M'))

Quelles sorties:

2018-11-19
10:04
0
Vikrant Sharma 19 nov. 2018 à 12:02

Essayez ceci: nous avons l'un des meilleurs packages pour l'analyse des dates appelé dateutil.

from dateutil import parser
date1='2018-11-19T10:04:57.426872'
print 'Start_date:',parser.parse(date1).strftime("%Y-%m-%d") 
print 'Start_time:',parser.parse(date1).strftime("%H:%M")

Result:Start_date:2018-11-19
       Start_time:10:04
0
Narendra Lucky 19 nov. 2018 à 12:26