Format de la date JavaScript en aaaa-mm-jj


383

J'ai une date avec le format Sun May 11,2014. Comment puis-je le convertir en 2014-05-11utilisant JavaScript?

function taskDate(dateMilli) {
    var d = (new Date(dateMilli) + '').split(' ');
    d[2] = d[2] + ',';

    return [d[0], d[1], d[2], d[3]].join(' ');
}

var datemilli = Date.parse('Sun May 11,2014');
console.log(taskDate(datemilli));

Le code me donne au- dessus du même format de date, sun may 11,2014. Comment puis-je réparer cela?


7
Je doute que le code ci-dessus vous donne autre chose qu'une erreur de syntaxe.
plalx

Envisagez vraiment d'utiliser une bibliothèque comme Moment.js. Il formatera dans le résultat souhaité :)
Ankur

5
Pourquoi utiliser une bibliothèque quand 5 lignes de code peuvent faire le travail? @Ankur
Black Mamba


Connexes: Quelles sont les chaînes de date-heure valides en JavaScript? Notez que "Sun May 11,2014" n'est pas une chaîne de date valide et son analyse peut échouer dans certains navigateurs.
str

Réponses:


525

Tu peux faire:

function formatDate(date) {
    var d = new Date(date),
        month = '' + (d.getMonth() + 1),
        day = '' + d.getDate(),
        year = d.getFullYear();

    if (month.length < 2) 
        month = '0' + month;
    if (day.length < 2) 
        day = '0' + day;

    return [year, month, day].join('-');
}

Exemple d'utilisation:

alert(formatDate('Sun May 11,2014'));

Production:

2014-05-11

Démo sur JSFiddle: http://jsfiddle.net/abdulrauf6182012/2Frm3/


11
Vraiment plusieurs déclarations de variables dans la même instruction? stackoverflow.com/questions/694102/…
bhspencer

8
@ Fuser97381 Plusieurs déclarations de variables dans la même instruction sont plus qu'une simple préférence de style esthétique. C'est une pratique dangereuse. Si vous échouez par inadvertance, ajoutez une virgule après chaque déclaration, vous finissez par créer des variables globales. Pas quelque chose qui devrait être encouragé sur ce qui pourrait devenir la réponse canonique à une question.
bhspencer

6
'use strict';@bhspencer
Vix

3
Le reformatage d'une chaîne de date ne doit pas dépendre de l'analyse réussie de chaînes non standard par l'analyseur intégré. Étant donné le format OP, il peut être reformaté en moins de code sans utiliser de date du tout.
RobG

Comment incrémenter plus de 30 jours dans la plage 1 ~ 31?
Steve Angello

457

Tirez simplement parti de la toISOStringméthode intégrée qui ramène votre date au format ISO 8601:

yourDate.toISOString().split('T')[0]

Où yourDate est votre objet date.

Edit: un gars a écrit ceci pour gérer le fuseau horaire dans les commentaires:

const offset = yourDate.getTimezoneOffset()
yourDate = new Date(yourDate.getTime() + (offset*60*1000))
return yourDate.toISOString().split('T')[0]

239
SOYEZ PRUDENT avec cette méthode car elle convertit d'abord la date en UTC. Si vous êtes dans un fuseau horaire + et que votre portion de temps est tôt dans la journée, cela peut revenir en arrière une journée. Alternativement, si vous êtes dans un - fuseau horaire et que votre portion de temps est en retard dans la journée, cela peut avancer d'une journée.
Luke Baulch

4
Essayez ceci à la place:new Date(yourDateStr).toISOString().split('T')[0]
exbuddha

24
const offset = yourDate.getTimezoneOffset(); yourDate = new Date(yourDate.getTime() + (offset*60*1000)); yourDate.toISOString().split('T')[0] cela devrait résoudre le problème de fuseau horaire
mjwrazor

5
now.toISOString().substring(0,10); Ceci est une alternative plus propre, car elle vous rappelle que ce YYYY-MM-DDsont les dix premiers caractères du format iso complet
Gutimore

4
Remarque: en utilisant la solution utile commentée par @mjwrazor, j'ai dû soustraire au lieu d'ajouter le décalage pour obtenir la date correcte (changer la + (offseten a - (offset)
rococo

135

J'utilise cette méthode pour obtenir la date au format aaaa-mm-jj :)

var todayDate = new Date().toISOString().slice(0,10);

14
Comment gérez-vous le changement de date d'un jour comme mentionné ici par @Luke_Baulch?
Malvineous

7
Vous pouvez le faire: var todayDate = new Date (); todayDate.setMinutes (todayDate.getMinutes () - todayDate.getTimezoneOffset ()); todayDate.toISOString (). slice (0,10); Cela devrait permettre d'éviter le problème UTC.
Fernando Aguilar

1
@FernandoAguilar Un doute cependant, comment savons-nous que nous devons soustraire le décalage ou l'ajouter?
whyAto8

var todayDate = new Date(2018, 3 - 1, 26); todayDate.toISOString().slice(0, 10);me donne "2018-03-25". Sur un autre système var todayDate = new Date(2018, 3 - 1, 26, 17, 0, 0); todayDate.toISOString().slice(0, 10);me donne "2018-03-27".
Salman A

2
Ça ne marche pas toujours. Il soustrait parfois un jour en raison de la conversion UTC.
NickG

110

La façon la plus simple de convertir votre date au format aaaa-mm-jj est de procéder comme suit:

var date = new Date("Sun May 11,2014");
var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
                    .toISOString()
                    .split("T")[0];

Comment ça fonctionne:

  • new Date("Sun May 11,2014")convertit la chaîne "Sun May 11,2014"en un objet date qui représente l'heure Sun May 11 2014 00:00:00dans un fuseau horaire en fonction des paramètres régionaux actuels (paramètres du système hôte)
  • new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))convertit votre date en un objet date qui correspond à l'heure Sun May 11 2014 00:00:00en UTC (heure standard) en soustrayant le décalage de fuseau horaire
  • .toISOString() convertit l'objet date en une chaîne ISO 8601 2014-05-11T00:00:00.000Z
  • .split("T") divise la chaîne en tableau ["2014-05-11", "00:00:00.000Z"]
  • [0] prend le premier élément de ce tableau

Démo

var date = new Date("Sun May 11,2014");
var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
                    .toISOString()
                    .split("T")[0];

console.log(dateString);


20
Personne d'autre n'est consterné que ce soit le moyen le plus simple ??
écart

.toISOString () ne fonctionne cependant pas correctement avec l'heure d'été.
Joe's Ideas du

2
@JoeDevmon: Je ne vois pas en quoi c'est pertinent ici. Le - (date.getTimezoneOffset() * 60000 )bit doit éliminer toutes les différences de fuseau horaire, y compris l'impact de l'heure d'été.
John Slegers

2
@JohnSlegers, c'est ce que je pensais, mais je recevais encore la veille dans certains cas. J'ai refactorisé et votre exemple fonctionne maintenant. J'ai dû avoir une chaîne de date bizarre ou quelque chose comme ça. Merci de vous y tenir et de l'avoir signalé. +1 👍
Joe's Ideas

2
J'ai cherché haut et bas sur SO et d'autres sites pour trouver la meilleure façon de traiter les problèmes de fuseau horaire avec les dates dans JS, et de loin, c'est de loin le plus simple et le meilleur. Je vous remercie!
HartleySan

34
format = function date2str(x, y) {
    var z = {
        M: x.getMonth() + 1,
        d: x.getDate(),
        h: x.getHours(),
        m: x.getMinutes(),
        s: x.getSeconds()
    };
    y = y.replace(/(M+|d+|h+|m+|s+)/g, function(v) {
        return ((v.length > 1 ? "0" : "") + eval('z.' + v.slice(-1))).slice(-2)
    });

    return y.replace(/(y+)/g, function(v) {
        return x.getFullYear().toString().slice(-v.length)
    });
}

Résultat:

format(new Date('Sun May 11,2014'), 'yyyy-MM-dd')
"2014-05-11

1
J'aime la flexibilité supplémentaire que cette solution donne par rapport aux autres réponses à cette question. Je n'ai pas testé cela à fond, mais pour le format que je souhaitais (c'est-à-dire "aaaa-MM-jj hh: mm: ss"), cela fonctionne exactement comme prévu.
porcus

3
Vous pourriez éviter eaaaaaaaasily eval.
Salman A

3
voici une version qui évite l'évaluation et commente mieux jsfiddle.net/8904cmLd/2
m1m1k

2
J'ai profité de cette réponse. J'ai remplacé cette ligne par l'instruction evalreturn ((v.length > 1 ? "0" : "") + z[v.slice(-1)]).slice(-2);
JesusIsMyDriver.dll

26

Une combinaison de certaines des réponses:

var d = new Date(date);
date = [
  d.getFullYear(),
  ('0' + (d.getMonth() + 1)).slice(-2),
  ('0' + d.getDate()).slice(-2)
].join('-');

J'aime la solution la meilleure - facile à lire et ne repose pas sur toISOString()les pièges potentiels du fuseau horaire avec l'utilisation de cette fonction.
matt.fc

c'est le premier qui ne me fait pas mal au cerveau.
ckapilla

22

Si vous n'avez rien contre l'utilisation de bibliothèques, vous pouvez simplement utiliser la bibliothèque Moments.js comme ceci:

var now = new Date();
var dateString = moment(now).format('YYYY-MM-DD');

var dateStringWithTime = moment(now).format('YYYY-MM-DD HH:mm:ss');
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>


Solution cool, mais c'est un package de 300 Ko
Adam

13

Utilisez simplement ceci:

var date = new Date('1970-01-01'); // Or your date here
console.log((date.getMonth() + 1) + '/' + date.getDate() + '/' +  date.getFullYear());

Simple et doux;)


4
le rembourrage n'est pas là pour le format 2 lettres. il affichera un seul chiffre si la date ou le mois est inférieur à 10, c'est pourquoi vous ne pouvez pas l'utiliser directement.
Yatender Singh

oui mais cela peut être réalisé simplement en utilisant javascript, son totalement jusqu'à votre condition je pense que oui, n'est-ce pas? @YatenderSingh
Pardeep Jain

4
ouais correct mais vérifiez le titre de la question "aaaa-mm-jj" qu'il veut :)
Yatender Singh

var old_date = new Date (date); var new_date = old_date.getFullYear () + '-' + (old_date.getMonth () + 1) + '-' + old_date.getDate ()
Sitti Munirah Abdul Razak

1
Génial. Cela a fonctionné et était simple et concis!
Waleed93

12

toISOString()suppose que votre date est l'heure locale et la convertit en UTC. Vous obtiendrez une chaîne de date incorrecte.

La méthode suivante doit renvoyer ce dont vous avez besoin.

Date.prototype.yyyymmdd = function() {         

    var yyyy = this.getFullYear().toString();                                    
    var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based         
    var dd  = this.getDate().toString();             

    return yyyy + '-' + (mm[1]?mm:"0"+mm[0]) + '-' + (dd[1]?dd:"0"+dd[0]);
};

Source: https://blog.justin.kelly.org.au/simple-javascript-function-to-format-the-date-as-yyyy-mm-dd/


9

Récupérez l'année, le mois et le jour, puis regroupez-les. Droit, simple et précis.

function formatDate(date) {
    var year = date.getFullYear().toString();
    var month = (date.getMonth() + 101).toString().substring(1);
    var day = (date.getDate() + 100).toString().substring(1);
    return year + "-" + month + "-" + day;
}

//Usage example:
alert(formatDate(new Date()));


9

Vous pouvez utiliser toLocaleDateString('fr-CA')sur l' Dateobjet

console.log(new Date('Sun May 11,2014').toLocaleDateString('fr-CA'));

J'ai également découvert que ces paramètres régionaux donnent le bon résultat à partir de cette liste de paramètres régionaux. Liste de tous les paramètres régionaux et de leurs codes abrégés?

'en-CA'
'fr-CA'
'lt-LT'
'sv-FI'
'sv-SE'


Une idée pourquoi cela fonctionne? Le format ISO est-il juste la valeur par défaut, ou ces paramètres régionaux utilisent-ils vraiment ce format? Si c'est le premier, je crains que cela ne change de façon inattendue à l'avenir.
jymbob

Cela ne fonctionne pas avec NodeJS en dehors du navigateur.
Donato

@jymbob Je pense que ces paramètres régionaux utilisent vraiment ces formats. Je suis arrivé à la même réponse en regardant cette page Wikipedia: en.wikipedia.org/wiki/Date_format_by_country
Ciprian Tomoiagă

5

Pour considérer également le fuseau horaire, ce one-liner devrait être bon sans aucune bibliothèque:

new Date().toLocaleString("en-IN", {timeZone: "Asia/Kolkata"}).split(',')[0]

5

Vous pouvez essayer ceci: https://www.npmjs.com/package/timesolver

npm i timesolver

Utilisez-le dans votre code:

const timeSolver = require('timeSolver');
const date = new Date();
const dateString = timeSolver.getString(date, "YYYY-MM-DD");

Vous pouvez obtenir la chaîne de date en utilisant cette méthode:

getString

4

Aucune de ces réponses ne m'a vraiment satisfait. Je voulais une solution multiplateforme qui me donnait le jour dans le fuseau horaire local sans utiliser de bibliothèques externes.

Voici ce que j'ai trouvé:

function localDay(time) {
  var minutesOffset = time.getTimezoneOffset()
  var millisecondsOffset = minutesOffset*60*1000
  var local = new Date(time - millisecondsOffset)
  return local.toISOString().substr(0, 10)
}

Cela devrait renvoyer le jour de la date, au format AAAA-MM-JJ, dans le fuseau horaire les références de date.

Ainsi, par exemple, localDay(new Date("2017-08-24T03:29:22.099Z"))reviendra "2017-08-23"même si c'est déjà le 24 à UTC.

Vous aurez besoin de polyfill Date.prototype.toISOString pour qu'il fonctionne dans Internet Explorer 8, mais il doit être pris en charge partout ailleurs.


Il convient peut-être de noter que cela ne vous donnera le 23/08/2017 que si vous êtes suffisamment en retard sur l'UTC (par exemple aux États-Unis).
Simon D

3

Date.js est idéal pour cela.

require("datejs")
(new Date()).toString("yyyy-MM-dd")

3

Je suggère d'utiliser quelque chose comme formatDate-js au lieu d'essayer de le répliquer à chaque fois. Utilisez simplement une bibliothèque qui prend en charge toutes les principales actions strftime.

new Date().format("%Y-%m-%d")

3
new Date().toLocaleDateString('pt-br').split( '/' ).reverse( ).join( '-' );

ou

new Date().toISOString().split('T')[0]
new Date('23/03/2020'.split('/').reverse().join('-')).toISOString()
new Date('23/03/2020'.split('/').reverse().join('-')).toISOString().split('T')[0]

Essaye ça!


La deuxième option peut afficher la mauvaise date car elle affichera les données dans le fuseau horaire UTC.
Ever Dev

2

Voici une façon de procéder:

var date = Date.parse('Sun May 11,2014');

function format(date) {
  date = new Date(date);

  var day = ('0' + date.getDate()).slice(-2);
  var month = ('0' + (date.getMonth() + 1)).slice(-2);
  var year = date.getFullYear();

  return year + '-' + month + '-' + day;
}

console.log(format(date));

1

function myYmd(D){
    var pad = function(num) {
        var s = '0' + num;
        return s.substr(s.length - 2);
    }
    var Result = D.getFullYear() + '-' + pad((D.getMonth() + 1)) + '-' + pad(D.getDate());
    return Result;
}

var datemilli = new Date('Sun May 11,2014');
document.write(myYmd(datemilli));


1

var d = new Date("Sun May 1,2014");

var year  = d.getFullYear();
var month = d.getMonth() + 1;
var day   = d.getDate(); 

month = checkZero(month);             
day   = checkZero(day);

var date = "";

date += year;
date += "-";
date += month;
date += "-";
date += day;

document.querySelector("#display").innerHTML = date;
    
function checkZero(i) 
{
    if (i < 10) 
    {
        i = "0" + i
    };  // add zero in front of numbers < 10

    return i;
}
<div id="display"></div>


1
new Date(new Date(YOUR_DATE.toISOString()).getTime() - 
                 (YOUR_DATE.getTimezoneOffset() * 60 * 1000)).toISOString().substr(0, 10)

1

Certaines des réponses précédentes étaient correctes, mais elles n'étaient pas très flexibles. Je voulais quelque chose qui pourrait vraiment gérer plus de cas marginaux, alors j'ai pris la réponse de @orangleliu et je l'ai développée. https://jsfiddle.net/8904cmLd/1/

function DateToString(inDate, formatString) {
    // Written by m1m1k 2018-04-05

    // Validate that we're working with a date
    if(!isValidDate(inDate))
    {
        inDate = new Date(inDate);
    }

    // See the jsFiddle for extra code to be able to use DateToString('Sun May 11,2014', 'USA');
    //formatString = CountryCodeToDateFormat(formatString);

    var dateObject = {
        M: inDate.getMonth() + 1,
        d: inDate.getDate(),
        D: inDate.getDate(),
        h: inDate.getHours(),
        m: inDate.getMinutes(),
        s: inDate.getSeconds(),
        y: inDate.getFullYear(),
        Y: inDate.getFullYear()
    };

    // Build Regex Dynamically based on the list above.
    // It should end up with something like this: "/([Yy]+|M+|[Dd]+|h+|m+|s+)/g"
    var dateMatchRegex = joinObj(dateObject, "+|") + "+";
    var regEx = new RegExp(dateMatchRegex,"g");
    formatString = formatString.replace(regEx, function(formatToken) {
        var datePartValue = dateObject[formatToken.slice(-1)];
        var tokenLength = formatToken.length;

        // A conflict exists between specifying 'd' for no zero pad -> expand
        // to '10' and specifying yy for just two year digits '01' instead
        // of '2001'.  One expands, the other contracts.
        //
        // So Constrict Years but Expand All Else
        if (formatToken.indexOf('y') < 0 && formatToken.indexOf('Y') < 0)
        {
            // Expand single digit format token 'd' to
            // multi digit value '10' when needed
            var tokenLength = Math.max(formatToken.length, datePartValue.toString().length);
        }
        var zeroPad = (datePartValue.toString().length < formatToken.length ? "0".repeat(tokenLength) : "");
        return (zeroPad + datePartValue).slice(-tokenLength);
    });

    return formatString;
}

Exemple d'utilisation:

DateToString('Sun May 11,2014', 'MM/DD/yy');
DateToString('Sun May 11,2014', 'yyyy.MM.dd');
DateToString(new Date('Sun Dec 11,2014'),'yy-M-d');

Belle solution propre et commentée. Pourtant, je suis sceptique quant au premier argument, qui est silencieusement remplacé par une nouvelle date si elle n'est pas reconnue comme une date valide. Je préfère mettre cette "valeur par défaut optionnelle" comme deuxième argument à la place, et retourner une sorte d'exception (cela pourrait être une simple chaîne retournée "Format de date non valide") au cas où le format ne serait pas reconnu, de sorte que l'erreur apparaisse clairement à le testeur / utilisateur
Balmipour

1

Cela a fonctionné pour moi pour obtenir la date actuelle dans le format souhaité (AAAAMMJJ HH: MM: SS):

var d = new Date();

var date1 = d.getFullYear() + '' +
            ((d.getMonth()+1) < 10 ? "0" + (d.getMonth() + 1) : (d.getMonth() + 1)) +
            '' +
            (d.getDate() < 10 ? "0" + d.getDate() : d.getDate());

var time1 = (d.getHours() < 10 ? "0" + d.getHours() : d.getHours()) +
            ':' +
            (d.getMinutes() < 10 ? "0" + d.getMinutes() : d.getMinutes()) +
            ':' +
            (d.getSeconds() < 10 ? "0" + d.getSeconds() : d.getSeconds());

print(date1+' '+time1);

1

Aucune bibliothèque n'est nécessaire

Juste du JavaScript pur.

L'exemple ci-dessous reprend les deux derniers mois à partir d'aujourd'hui:

var d = new Date()
d.setMonth(d.getMonth() - 2);
var dateString = new Date(d);
console.log('Before Format', dateString, 'After format', dateString.toISOString().slice(0,10))


Dangereux. Dans ce cas, vous ignorez le décalage du fuseau horaire.
maxence51

1

Format de date compatible PHP

Voici une petite fonction qui peut prendre les mêmes paramètres que la fonction PHP date()et retourner une chaîne date / heure en JavaScript.

Notez que toutes les options de format date () de PHP ne sont pas prises en charge. Vous pouvez étendre l' partsobjet pour créer le jeton de format manquant

/**
 * Date formatter with PHP "date()"-compatible format syntax.
 */
const formatDate = (format, date) => {
  if (!format) { format = 'Y-m-d' }
  if (!date) { date = new Date() }

  const parts = {
    Y: date.getFullYear().toString(),
    y: ('00' + (date.getYear() - 100)).toString().slice(-2),
    m: ('0' + (date.getMonth() + 1)).toString().slice(-2),
    n: (date.getMonth() + 1).toString(),
    d: ('0' + date.getDate()).toString().slice(-2),
    j: date.getDate().toString(),
    H: ('0' + date.getHours()).toString().slice(-2),
    G: date.getHours().toString(),
    i: ('0' + date.getMinutes()).toString().slice(-2),
    s: ('0' + date.getSeconds()).toString().slice(-2)
  }

  const modifiers = Object.keys(parts).join('')
  const reDate = new RegExp('(?<!\\\\)[' + modifiers + ']', 'g')
  const reEscape = new RegExp('\\\\([' + modifiers + '])', 'g')

  return format
    .replace(reDate, $0 => parts[$0])
    .replace(reEscape, ($0, $1) => $1)
}

// ----- EXAMPLES -----
console.log( formatDate() ); // "2019-05-21"
console.log( formatDate('H:i:s') ); // "16:21:32"
console.log( formatDate('Y-m-d, o\\n H:i:s') ); // "2019-05-21, on 16:21:32"
console.log( formatDate('Y-m-d', new Date(2000000000000)) ); // "2033-05-18"

Essentiel

Voici un résumé avec une version mise à jour de la formatDate()fonction et des exemples supplémentaires: https://gist.github.com/stracker-phil/c7b68ea0b1d5bbb97af0a6a3dc66e0d9


0

Encore une autre combinaison des réponses. Bien lisible, mais un peu longue.

function getCurrentDayTimestamp() {
  const d = new Date();

  return new Date(
    Date.UTC(
      d.getFullYear(),
      d.getMonth(),
      d.getDate(),
      d.getHours(),
      d.getMinutes(),
      d.getSeconds()
    )
  // `toIsoString` returns something like "2017-08-22T08:32:32.847Z"
  // and we want the first part ("2017-08-22")
  ).toISOString().slice(0, 10);
}

0

Si la date doit être la même dans tous les fuseaux horaires, par exemple, représente une certaine valeur de la base de données, assurez-vous d'utiliser les versions UTC du jour, du mois et des fonctions complètes sur l'objet de date JavaScript car cela s'affichera en heure UTC et évitez les erreurs ponctuelles dans certains fuseaux horaires.

Encore mieux, utilisez la bibliothèque de dates Moment.js pour ce type de mise en forme.


0

J'ai modifié la réponse de Samit Satpute comme suit:

var newstartDate = new Date();
// newstartDate.setDate(newstartDate.getDate() - 1);
var startDate = newstartDate.toISOString().replace(/[-T:\.Z]/g, ""); //.slice(0, 10); // To get the Yesterday's Date in YYYY MM DD Format
console.log(startDate);


0

Format et recherche de date maximale et minimale à partir des données de la table de hachage:

var obj = {"a":'2001-15-01', "b": '2001-12-02' , "c": '2001-1-03'};

function findMaxMinDate(obj){
  let formatEncode = (id)=> { let s = id.split('-'); return `${s[0]+'-'+s[2]+'-'+s[1]}`}
  let formatDecode = (id)=> { let s = id.split('/'); return `${s[2]+'-'+s[0]+'-'+s[1]}`}
  let arr = Object.keys( obj ).map(( key )=> { return new Date(formatEncode(obj[key])); });
  let min = new Date(Math.min.apply(null, arr)).toLocaleDateString();
  let max = new Date(Math.max.apply(null, arr)).toLocaleDateString();
  return {maxd: `${formatDecode(max)}`, mind:`${formatDecode(min)}`}
}

console.log(findMaxMinDate(obj));


Quel est le lien avec la question (formatage d'une date)?
Peter Mortensen

0

Le reformatage d'une chaîne de date est assez simple, par exemple

var s = 'Sun May 11,2014';

function reformatDate(s) {
  function z(n){return ('0' + n).slice(-2)}
  var months = [,'jan','feb','mar','apr','may','jun',
                 'jul','aug','sep','oct','nov','dec'];
  var b = s.split(/\W+/);
  return b[3] + '-' +
    z(months.indexOf(b[1].substr(0,3).toLowerCase())) + '-' +
    z(b[2]);
}

console.log(reformatDate(s));

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.