2010-01-28 5 views

Répondre

165

La classe datetime a une méthode strftime. strftime() Behavior dans les documents Python documente les différents formats qu'il accepte.

Pour cet exemple précis, il ressemblerait à quelque chose comme:

my_datetime.strftime("%B %d, %Y") 
78

Voici comment vous pouvez accomplir la fonction de mise en forme générale de même en utilisant python ...

>>>from datetime import datetime 
>>>"{:%B %d, %Y}".format(datetime.now()) 

La mise en forme des caractères utilisés ici sont les mêmes que ceux utilisés par strftime. Ne manquez pas le premier : dans le spécificateur de format.

L'utilisation du format() au lieu de strftime() dans la plupart des cas peuvent rendre le code plus lisible, plus facile à écrire et cohérente avec la façon dont la sortie est générée au format ...

>>>"{} today's date is: {:%B %d, %Y}".format("Andre", datetime.now()) 

Comparez ci-dessus avec le suivant strftime() ... autre

>>>"{} today's date is {}".format("Andre", datetime.now().strftime("%B %d, %Y")) 

de plus, ce qui suit ne va pas travailler ...

>>>datetime.now().strftime("%s %B %d, %Y" % "Andre") 
Traceback (most recent call last): 
    File "<pyshell#11>", line 1, in <module> 
    datetime.now().strftime("%s %B %d, %Y" % "Andre") 
TypeError: not enough arguments for format string 

Et ainsi de suite ...

+1

Je me demandais quels sont les avantages de l'utilisation de format() pour ce cas, par rapport à strftime(). L'une ou l'autre méthode présente-t-elle un avantage autre qu'une préférence personnelle? Quelles sont les différences de performance? – Andre

+2

@Andre Merci pour votre question! Les préférences personnelles sont souvent guidées par l'expérience. S'il vous plaît voir ma réponse mise à jour pour pourquoi je préfère format() sur strftime(). Performance et Python sont deux mots qui ne vont pas bien ensemble. Je ne serais pas trop concerné par les performances si j'avais décidé d'utiliser Python. Quand j'ai besoin de performance, j'utilise un langage de haute performance typé statiquement. –

+0

La méthode de format est plus simple dans la plupart des cas. Compare: 'print 'Aujourd'hui c'est {:% B% d,% Y}'. Format (datetime.now())' à 'imprimer' Aujourd'hui c'est {} '. Format (datetime.now(). Strftime ('% B% d,% Y ') '. Quand vous utilisez la méthode format() de toute façon, pourquoi ne pas l'utiliser pour le formatage de la date? – ChaimG

-1

Ceci est pour formater la date?

def format_date(day, month, year): 
     # {} betekent 'plaats hier stringvoorstelling van volgend argument' 
     return "{}/{}/{}".format(day, month, year) 
3

très ancienne question, je sais. mais avec le nouveau f-strings (à partir de python 3.6), il y a de nouvelles options. donc ici pour être complet:

from datetime import datetime 

dt = datetime.now() 

# str.format 
strg = '{:%B %d, %Y}'.format(dt) 
print(strg) # July 22, 2017 

# datetime.strftime 
strg = dt.strftime('%B %d, %Y') 
print(strg) # July 22, 2017 

# f-strings in python >= 3.6 
strg = f'{dt:%B %d, %Y}' 
print(strg) # July 22, 2017 

strftime() and strptime() Behavior explique ce signifie le format spécificateurs.