J'ai une chaîne de date au format 'lundi 15 février 2010'. Je veux changer le format en '15/02/2010 '. Comment puis-je faire ceci?
datetime
module pourrait vous aider avec cela:
datetime.datetime.strptime(date_string, format1).strftime(format2)
Vous pouvez installer la bibliothèque dateutil . Sa fonction parse
peut déterminer le format d'une chaîne sans avoir à spécifier le format comme vous le faites avec datetime.strptime
.
from dateutil.parser import parse
dt = parse('Mon Feb 15 2010')
print(dt)
# datetime.datetime(2010, 2, 15, 0, 0)
print(dt.strftime('%d/%m/%Y'))
# 15/02/2010
>>> from_date="Mon Feb 15 2010"
>>> import time
>>> conv=time.strptime(from_date,"%a %b %d %Y")
>>> time.strftime("%d/%m/%Y",conv)
'15/02/2010'
convertir une chaîne en objet datetime
from datetime import datetime
s = "2016-03-26T09:25:55.000Z"
f = "%Y-%m-%dT%H:%M:%S.%fZ"
out = datetime.strptime(s, f)
print(out)
output:
2016-03-26 09:25:55
Comme cette question revient souvent, voici l'explication simple.
Le module datetime
ou time
a deux fonctions importantes.
Dans les deux cas, nous avons besoin d'une chaîne de formatage. C'est la représentation qui indique comment la date ou l'heure est formatée dans votre chaîne.
Supposons maintenant que nous avons un objet de date.
>>> from datetime import datetime
>>> d = datetime(2010, 2, 15)
>>> d
datetime.datetime(2010, 2, 15, 0, 0)
Si nous voulons créer une chaîne à partir de cette date au format 'Mon Feb 15 2010'
>>> s = d.strftime('%a %b %d %y')
>>> print s
Mon Feb 15 10
Supposons que nous voulions convertir à nouveau cette s
en un objet datetime
.
>>> new_date = datetime.strptime(s, '%a %b %d %y')
>>> print new_date
2010-02-15 00:00:00
Reportez-vous à This documentez toutes les directives de formatage relatives à datetime.
Juste pour terminer, lorsque vous analysez une date à l'aide de strptime()
et que la date contient le nom d'un jour, d'un mois, etc., sachez que vous devez tenir compte des paramètres régionaux.
C'est également mentionné dans les docs .
Par exemple:
import locale
print(locale.getlocale())
>> ('nl_BE', 'ISO8859-1')
from datetime import datetime
datetime.strptime('6-Mar-2016', '%d-%b-%Y').strftime('%Y-%m-%d')
>> ValueError: time data '6-Mar-2016' does not match format '%d-%b-%Y'
locale.setlocale(locale.LC_ALL, 'en_US')
datetime.strptime('6-Mar-2016', '%d-%b-%Y').strftime('%Y-%m-%d')
>> '2016-03-06'
@codeling et @ user1767754: Les deux lignes suivantes fonctionneront. J'ai vu personne n'a posté la solution complète pour l'exemple de problème qui a été demandé. Espérons que ceci est une explication suffisante.
import datetime
x = datetime.datetime.strptime("Mon Feb 15 2010", "%a %b %d %Y").strftime("%d/%m/%Y")
print(x)
Sortie:
15/02/2010
utiliser la bibliothèque datetime http://docs.python.org/library/datetime.html look up 9.1.7. particulier. strptime () strftime () Comportement¶ exemples http://pleac.sourceforge.net/pleac_python/datesandtimes.html