Javascript : retourner une date au format SQL à partir d'un objet Date()

12 janvier 2017

L'objet Date() en Javascript est certes puissant, mais il n'est pas aussi facile et agréable à utiliser que ses équivalents dans d'autres langages. Le fait que les mois soient retournés de 0 à 11, ou encore que les nombres inférieurs à 10 soient retournés tels quels sans le 0 du début, en sont de bons exemples. Au premier contact, quelle surprise de se retrouver avec des dates du genre 12/0/2017 pour le 12 janvier 2017, ou des 1:1 pour afficher "une heure et une minute". C'est moche...

Comment faire pour contourner facilement ces écueils et obtenir une date format SQL sans pondre une fonction de 10 lignes ?

Rien de plus simple, une ligne suffit :

var sqlDate = new Date().toISOString().slice(0, 19).replace('T', ' ');

On retourne un objet Date() auquel on assigne la méthode toISOString()*, dont on ne garde que les 19 premiers caractères et au sein de laquelle on remplace le T par un espace.

Résultat : 2017-01-12 15:35:03

* qui retourne ça 2017-01-12T15:35:03.682Z