web-dev-qa-db-fra.com

Analyser la date et changer le format

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?

85
Nimmy

datetime module pourrait vous aider avec cela:

datetime.datetime.strptime(date_string, format1).strftime(format2)
109
SilentGhost

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
44
llazzaro
>>> 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'
22
ghostdog74

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
17
Anjaneyulu Batta

Comme cette question revient souvent, voici l'explication simple.

Le module datetime ou time a deux fonctions importantes. 

  • strftime - crée une représentation sous forme de chaîne de la date ou de l'heure à partir d'un objet datetime ou time.
  • strptime - crée un objet date/heure ou heure à partir d'une chaîne.

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.

9
thavan

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'
2
ƘɌỈSƬƠƑ

@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
0
Gobryas

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

0
Roman A. Taycher