Existe-t-il un format d'impression Python datetimes qui n'utilisera pas de remplissage nul aux dates et heures?
Format que j'utilise maintenant:
mydatetime.strftime('%m/%d/%Y %I:%M%p')
Résultat: 29/02/2012 05:03 PM
Souhaité: 29/02/2012 17:03
Quel format représenterait le mois comme '2' au lieu de '02', et l'heure comme '5:03 PM' au lieu de '05: 03PM '
Les options de formatage disponibles avec datetime.strftime()
seront toutes à zéro. Vous pouvez bien sûr utiliser votre propre fonction de formatage, mais la solution la plus simple dans ce cas peut être de post-traiter le résultat de datetime.strftime()
:
s = mydatetime.strftime('%m/%d/%Y %I:%M%p').lstrip("0").replace(" 0", " ")
L'autre alternative pour éviter le "zéro tout ou rien" devant le zéro ci-dessus est de placer un moins devant le type de champ:
mydatetime.strftime('%-m/%d/%Y %-I:%M%p')
Puis ceci: '4/10/2015 03:00 AM'
Devient: '4/10/2015 3:00 AM'
Vous pouvez éventuellement placer un moins devant la journée si vous le souhaitez.
Le nouveau système de formatage de chaînes offre une alternative à strftime
. C'est assez lisible - en effet, il pourrait être préférable à strftime
sur ce compte. Sans oublier le fait qu'il ne fait pas de zéro-pad:
>>> '{d.month}/{d.day}/{d.year}'.format(d=datetime.datetime.now())
'3/1/2012'
Puisque vous voulez probablement un remplissage nul dans le champ minute, vous pouvez le faire:
>>> '{d.month}/{d.day}/{d.year} {d.hour}:{d.minute:02}'.format(d=now)
'3/1/2012 20:00'
Si vous voulez du temps "normal" au lieu du temps "militaire", vous pouvez toujours utiliser les spécificateurs standard strftime
. Idéalement, pour nos besoins, strftime
does fournit un code pour le temps de 12 heures complété par un blanc au lieu d'un zéro non significatif:
'{d.month}/{d.day}/{d.year} {d:%l}:{d.minute:02}{d:%p}'.format(d=now)
'4/4/2014 6:00PM'
Cela devient hélas un peu moins lisible. Et comme le souligne @mlissner, strftime
échouera sur certaines (toutes?) Plateformes pour les dates antérieures à 1900.
La réponse acceptée n'est pas une solution appropriée (IMHO) Les méthodes documentées appropriées:
Sous Linux, "#" est remplacé par "-":
% -d,% -H,% -I,% -j,% -m,% -M,% -S,% -U,% -w,% -W,% -y,% -Y
Sous Windows "-" est remplacé par "#":
% # d,% # H,% # I,% # j,% # m,% # M,% # S,% # U,% # w,% # W,% # y,% # Y
#Linux
mydatetime.strftime('%-m/%d/%Y %-I:%M%p')
# Windows
mydatetime.strftime('%#m/%d/%Y %#I:%M%p')
Source: https://msdn.Microsoft.com/en-us/library/fe06s4ak.aspx
Comme indiqué par Sagneta: L'astuce # de hachage sous Windows n'est disponible que pour l'exécutable python exécutable. Cela ne fonctionnera pas pour les implémentations cygwin python).
Bonne réponse de Chris Freeman sur Linux.
Sur Windows, c'est:
mydate.strftime('%#m/%#d/%Y')
Pensée qui pourrait aider.