Formater une date en JavaScript comme SimpleDateFormat de Java

En JavaScript il n’existe pas de fonction permettant de formater une date. En parcourant le web, j’ai trouvé la bibliothèque jquery-dateFormat. Bien que son non contiennent jQuery elle ne nécessite pas obligatoirement l’usage de jQuery.

Vous trouverez cette bibliothèque sous la former 4 fichiers différents :

Qu’apporte cette bibliothèque :

  • licence MIT. Donc peut-être intégré dans un projet commercial.
  • Très légère : moins de 5Ko et semble être la plus légère des bibliothèques de formatages de date.
  • Fonctionne avec jQuery si présent, la syntaxe d’usage est : $.format(...)
  • fonctionne aussi sans jQuery, la syntaxe d’usage est alors : DateFormat.format(...).
  • Syntaxe basée sur la classe Java « java.text.SimpleDateFormat« .
    Voici sa nomenclature de formatage avec pour exemple  la date 9/01/2016 13h55 56seconde et 45ms

    • yy = année sur deux digits (donne « 16 »)
    • yyyy = année (donne « 2016 »)
    • M = numéro de moins allant de 1 à 12  (donne « 1 »)
    • MM = numéro de moins sur deux digits allant de 01 à 12 (donne « 01 »)
    • MMM = abréviation du mois en anglais : Jan, Feb … Dec (donne « Jan »)
    • MMMM = nom du mois en anglais : January, February … December. (donne « january »)
    • d = numéro de jour allant de 1 à 31  (donne « 9 »)
    • dd = numéro de jour sur deux digits allant de 1 à 31 (donne « 09 »)
    • ddd = nom du jour en anglais  : Monday, Tuesday … Sunday (donne « Saturday »)
    • E = Abréviation du non du jour : (Mon, Tue … Sun (donne « Sat »)
    • D –  ordinal du numéro du jour en anglais : 1st, 2nd, 3rd, 21st, 22nd, 23rd, 31st, 4th… (donne « 6nd »)
    • h = heure allant de 0 à 12 (donne « 1 »)
    • hh = heure sur deux digit allant de 00-12 (donne « 01 »)
    • H = heure du jour allant de 0-23 (donne « 13 »)
    • HH = heure du jour sur deux digits allant de 00-23 (donne « 13 »)
    • mm = minute (donne « 55 »)
    • ss = seconde (donne « 56 »)
    • SSS = millisecondes (donne « 45 »)
    • a = marqueur anglais de journée  : AM , PM (donne « PM »)
    • p = marqueur anglais de journée  a.m., p.m. marker (donne « p.m »)
  • une fonction d’affichage en texte anglais du temps écoule de maintenant à la date : prettyDate()
     jQuery.format.prettyDate(new Date())             // => "just now"
     jQuery.format.prettyDate(new Date().getTime())   // => "just now"
     jQuery.format.prettyDate("2008-01-28T20:24:17Z") // => "2 hours ago"
     jQuery.format.prettyDate("2008-01-27T22:24:17Z") // => "Yesterday"
     jQuery.format.prettyDate("2008-01-26T22:24:17Z") // => "2 days ago"
     jQuery.format.prettyDate("2008-01-14T22:24:17Z") // => "2 weeks ago"
     jQuery.format.prettyDate("2007-12-15T22:24:17Z") // => "more than 5 weeks ago"

un usage de code sans jQuery

 <script>
   document.write(DateFormat.format.date("2009-12-18 10:54:50.546", "Test: dd/MM/yyyy"));
   document.write(DateFormat.format.date("Wed Jan 13 10:43:41 CET 2010", "dd~MM~yyyy"));
 </script>

Le gros défaut de cette bibliothèque est de ne pas être localisé, l’affichage des textes de date son en anglais. Vous pouvez cependant apporter votre contribution de localisation à l’auteur.