Convivial format de l'heure en Python?
Python: j'ai besoin d'afficher le fichier de modification de fois dans les "il y a 1 jour", "deux heures", format.
Est-il quelque chose de prêts à le faire? Il doit être en anglais.
Vous devez vous connecter pour publier un commentaire.
Le code a été publié initialement sur un blog "Python Joli fonction de la Date" (http://evaisse.com/post/93417709/python-pretty-date-function)
Il est reproduit ici que le blog compte a été suspendu, et la page n'est plus disponible.
diff = now - now
. Cant-nous faire d'diff = 0
float
, pas de typeint
. Dans le premier cas, le changementint
àfloat
.Si vous arrive d'être en utilisant Django, puis de nouveau dans la version 1.4 est le
naturaltime
modèle de filtre.Pour l'utiliser, ajoutez d'abord
'django.contrib.humanize'
à votreINSTALLED_APPS
paramètre dans settings.py et{% load humanize %}
dans le modèle que vous utilisez le filtre.Puis, dans votre modèle, si vous avez une variable datetime
my_date
, vous pouvez imprimer sa distance par rapport au présent en utilisant{{ my_date|naturaltime }}
, qui sera rendu par quelque chose comme4 minutes ago
.D'autres nouvelles choses dans Django 1.4.
Documentation de
naturaltime
et d'autres filtres dans ledjango.contrib.humaniser
set.Dans la recherche de la même chose avec la condition supplémentaire que manipuler des dates futures, j'ai trouvé ceci:
http://pypi.python.org/pypi/py-pretty/1
Exemple de code (de site):
Vous pouvez aussi le faire avec flèche paquet
De page github:
La réponse Sam Smith lien est bon, et je l'ai utilisé pendant un an ou deux, mais je pense qu'il pourrait être amélioré de plusieurs façons:
Voici ce que je suis venu avec:
Remarquez comment chaque n-uplet dans
intervals
est facile à interpréter et contrôler: un'minute'
est60
secondes; un'hour'
est60
minutes; etc. La seule fudge est le réglage deweeks_per_month
à sa valeur moyenne, compte tenu de la demande, qui doit être fine. (Et notez que c'est clairement un coup d'œil à ce que la dernière des trois constantes de multiplier à 365.242, le nombre de jours par an).Un inconvénient à ma fonction, c'est qu'il ne fait rien en dehors de la "## unités" modèle: "Hier", "tout à l'heure", etc. sont à droite. Puis de nouveau, l'affiche originale n'a pas demandé ces termes de fantaisie, donc je préfère ma fonction pour sa concision et à la lisibilité de ses constantes numériques. 🙂
value + " ago"
ou la duréevalue + " left"
La il y a paquet fournit cette. Appel
human
sur undatetime
objet pour obtenir une description lisible par l'homme de la différence.Il est
humaniser
le paquet:Il prend en charge la localisation l10n, l'internationalisation i18n:
humanize
ne prend pas en charge le fuseau horaire conscient de datetimes; vous aurez à convertir ceux de via dans naïf (dans le fuseau horaire local) avecdt.astimezone().replace(tzinfo=None)
.L'aide d'objets datetime avec tzinfo:
J'ai écrit détaillé sur le blog pour la solution sur http://sunilarora.org/17329071
J'ai écris un rapide extrait ici.
C'est l'essentiel de @sunil après
Vous pouvez le télécharger et l'installer à partir du lien ci-dessous. Il devrait être plus utile pour vous. Il a été la prestation de l'utilisateur message amical à partir de la deuxième année.
C'est bien testé.
https://github.com/nareshchaudhary37/timestamp_content
Étapes ci-dessous pour l'installer dans votre virtuel env.
Ici est une mise à jour de la réponse basée sur Sam Smith est mise en œuvre correctement les mains à la fois le décalage de la naïveté et de l'offset au courant datetimes. Vous pouvez également donner une valeur par défaut de fuseaux horaires. Python 3.5+.