Je souhaite changer la chaîne 'datetime.datetime(2018, 4, 15, 12, 59)'
au format '2018-04-15T12:59'
.
J'ai créé une fonction qui ressemble à:
def changeDateFormat(date):
newDate = []
for i in date.split('datetime')[2].split(','):
newDate.append(re.sub('[() ]', '', i))
newStr = newDate[0] + '-0' + newDate[1] + '-' + newDate[2] + 'T' + newDate[3] + ':' + newDate[4]
return newStr
Et il fonctionne.
Cependant, je veux également qu'il gère le cas où si chaque unité est inférieure à 10, je veux ajouter un '0'
. À l'heure actuelle, il ajoute simplement un '0'
.
Je peux le faire de manière très inefficace, mais je me demande comment je peux le faire de manière intelligente.
3 réponses
Je ne comprends pas pourquoi vous utilisez la représentation sous forme de chaîne d'un objet datetime mais eval
est votre ami:
>>> import datetime
>>> eval('datetime.datetime(2018, 4, 15, 12, 59)').isoformat()
'2018-04-15T12:59:00'
Documentation eval
: https://docs.python.org/3 /library/functions.html#eval
Je suppose que vous essayez d'éviter d'utiliser l'objet datetime
, car cela semble évidemment déroutant autrement.
Je peux le faire de manière très inefficace
Vous n'êtes en fait pas très loin, juste une ligne.
def changeDateFormat(date):
newDate = []
for i in date.split('datetime')[2].split(','):
newDate.append(re.sub('[() ]', '', i))
pad = '-0' if newDate[1] < 10 else '-'
newStr = newDate[0] + pad + newDate[1] + '-' + newDate[2] + 'T' + newDate[3] + ':' + newDate[4]
return newStr
Je crains qu'il n'y ait pas de moyen plus intelligent si vous n'utilisez pas l'objet datetime
.
Datetime.strftime et eval seraient parfaits ici.
import datetime
# use eval to execute the string like a a command
dt = eval('datetime.datetime(2018, 4, 15, 12, 59)')
formatted_date = dt.strftime('%Y-%m-%dT%H:%M')
sortie: '2018-04-15T12: 59'
Référence: strftime () et strptime () Comportement
Questions connexes
Questions liées
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.