4 votes

formatage de la date à la manière de gmail en python

Je peux formater la date avec strftime en python, mais maintenant je veux montrer la date dans un format relatif à l'heure actuelle.

Par exemple, si la date est proche d'aujourd'hui, afficher dans le temps.

si c'est dans la semaine, montrer comme hier, etc.

si c'est dans le mois, il suffit de l'afficher comme la semaine ou le mois dernier.

s'il est plus ancien que cela, montrez-le comme valeur réelle.

Je peux le faire avec beaucoup de "si", mais y a-t-il un moyen plus simple de le faire ? ou une bibliothèque ?

6voto

Lakshman Prasad Points 24002

Il y a est une bibliothèque

De la documentation ,

[python]
>>> from relativeDates import *
>>> import time
>>> x = time.time()-1000
>>> getRelativeTime(x)
'17 minutes ago'
>>> x-=12345
>>> getRelativeTime(x)
'3 hours ago'
>>> x+=543211
>>> getRelativeTime(x)
'in 6 days'
>>> getRelativeTime(x,accuracy=2)
'in 6 days 3 hours'
>>> x-=987661
>>> getRelativeTime(x,accuracy=2)
'5 days 7 hours ago'
>>> getRelativeTime(x,accuracy=2,alternative_past="long long ago")
'long long ago'
>>> getRelativeTimeStr("07/15/06 1823")
'in 4 days'
>>> getRelativeTimeStr("07/10/06 1823")
'7 hours ago'
>>> getRelativeTimeStr("07/10/06 1823",accuracy=2)
'7 hours 30 mins ago'
[/python]

3voto

Paolo Moretti Points 9519

django.contrib.humanize.naturaltime

Pour les valeurs de date, renvoie une chaîne représentant le nombre de secondes, minutes ou d'heures, en revenant à un format de date plus long si la valeur la valeur date de plus d'un jour. Si la valeur de la date se situe dans le future, la valeur de retour utilisera automatiquement une expression appropriée.

Exemples (lorsque 'maintenant' est le 17 février 2007 16:30:00) :

17 Feb 2007 16:30:00 becomes now.
17 Feb 2007 16:29:31 becomes 29 seconds ago.
17 Feb 2007 16:29:00 becomes a minute ago.
17 Feb 2007 16:25:35 becomes 4 minutes ago.
17 Feb 2007 15:30:29 becomes an hour ago.
17 Feb 2007 13:31:29 becomes 2 hours ago.
16 Feb 2007 13:31:29 becomes 1 day ago.
17 Feb 2007 16:30:30 becomes 29 seconds from now.
17 Feb 2007 16:31:00 becomes a minute from now.
17 Feb 2007 16:34:35 becomes 4 minutes from now.
17 Feb 2007 16:30:29 becomes an hour from now.
17 Feb 2007 18:31:29 becomes 2 hours from now.
18 Feb 2007 16:31:29 becomes 1 day from now.

Vous pouvez obtenir les sources aquí .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X