J'aimerais afficher certaines dates par rapport à la date actuelle dans un format convivial.
Exemples de dates relatives conviviales:
- Il y a 10 secondes
- Dans 20 minutes
- il y a 1 jour
- Il y a 5 semaines
- il y a 2 mois
En gros, en préservant fidèlement l'ordre de grandeur le plus élevé (et de préférence, en ne déplaçant les unités que lorsque vous passez 2 de ces unités - 5 semaines au lieu de 1 mois).
Bien que je puisse vivre avec une bibliothèque qui avait moins de contrôle et des dates encore plus conviviales comme:
- hier
- demain
- la semaine dernière
- il y a quelques minutes
- dans quelques heures
Des bibliothèques populaires pour cela?
javascript
date
formatting
rampion
la source
la source
Réponses:
Depuis que j'ai écrit cette réponse, une bibliothèque bien connue est moment.js .
Il existe des bibliothèques disponibles , mais il est simple de l'implémenter vous-même. Utilisez juste une poignée de conditions.
Supposons que ce
date
soit unDate
objet instancié pour la durée avec laquelle vous souhaitez effectuer une comparaison.Vous devrez l'adapter pour gérer les dates futures.
la source
getTimeAgo
fonction de style twitter gist.github.com/pomber/6195066a9258d1fb93bb59c206345b38J'ai écrit moment.js , une bibliothèque de dates qui fait cela. Il fait environ 5
Ko (2011) 52 Ko (2019) et fonctionne dans les navigateurs et dans Node. C'est probablement aussi la bibliothèque de dates la plus populaire et la plus connue pour JavaScript.Il prend en charge timeago, formatage, analyse, interrogation, manipulation, i18n, etc.
Timeago (temps relatif) pour les dates dans le passé est terminé avec
moment().fromNow()
. Par exemple, pour afficher le 1er janvier 2019 au format timeago:Les chaînes timeago sont personnalisables avec
moment.updateLocale()
, vous pouvez donc les modifier comme bon vous semble.Les seuils ne correspondent pas à ce que demande la question («5 semaines» contre «1 mois»), mais il est documenté quant aux chaînes utilisées pour quelle plage de temps.
la source
Voici quelque chose de John Resig - http://ejohn.org/blog/javascript-pretty-date/
EDIT (27/06/2014): Suite au commentaire de Sumurai8 - bien que la page liée fonctionne toujours, voici l'extrait du
pretty.js
lien vers de l'article ci-dessus:pretty.js
Usage:
Extrait de l'article sur l'utilisation:
Avec JavaScript:
Avec jQuery:
Faiz: J'ai apporté quelques modifications au code d'origine, des corrections de bogues et des améliorations.
la source
sugar.js a d'excellentes fonctions de formatage de date.
Non seulement cela, il fournit également des fonctions générales communes telles que le formatage des chaînes, le formatage des nombres, etc. qui sont pratiques à utiliser.
la source
voici un exemple de sucre vs moment: pour un calendrier qui affiche des semaines, j'avais besoin de la valeur du dernier lundi:
moment.js
sugar.js
Je préfère de loin le sucre et après quelques mois avec moment.js, je passe maintenant à sugar.js. il est plus clair et s'intègre bien avec la classe Date de Javascripts.
Les cas OP sont couverts par les deux bibliothèques, pour sugar.js voir http://sugarjs.com/dates
la source
Ce script js est très agréable. Tout ce que vous avez à faire est de l'exécuter. Toutes les
<time>
balises seront changées en dates relatives et mises à jour toutes les quelques minutes, de sorte que l'heure relative sera toujours à jour.http://timeago.yarp.com/
la source
On dirait que vous pourriez utiliser http://www.datejs.com/
Ils ont un exemple sur la page principale qui fait exactement ce que vous décrivez!
EDIT: En fait, je pense que j'ai inversé votre question dans ma tête. Dans tous les cas, je pense que vous pourriez le vérifier car c'est de toute façon une très bonne bibliothèque!
EDIT x2: Je vais faire écho à ce que les autres ont dit http://momentjs.com/ est probablement le meilleur choix disponible en ce moment.
EDIT x3: Je n'ai pas utilisé date.js depuis plus d'un an. J'utilise exclusivement momentjs pour tous mes besoins liés aux rendez-vous.
la source