2012-08-30 5 views
1

Est-il possible de faire quelque chose comme ceci:chaîne de date à nouveau javascript Date()

var parsedDate = new Date("20120830", "yyyyMMdd"); 

Je dois convertir la chaîne de date qui est 20120830 au format aaaaMMjj dans "30/08/2012"

+1

et votre religion vous interdit de faire x.slice (6) + "/" + x.slice (4,6) + "/" + x.slice (0,4) '? – 6502

+0

Voir http://stackoverflow.com/questions/1258310/simplest-way-to-parse-a-date-in-javascript – James

+0

Vous monsieur, sont mon sauveur :)) Merci +1 –

Répondre

0

Le constructeur Date (dateString) n'accepte pas les formats de date personnalisés (certains navigateurs implémentent d'autres formats, mais ceux-ci doivent être évités pour des raisons de compatibilité). Mais il y a aussi le constructeur alternatif Date (année, mois, jour) et votre format de date est facile à diviser avec tranche. Attention cependant: les mois sont basés sur zéro, pas sur un seul. Donc Février est 00 et Décembre est 11.

question connexe: Javascript Date() constructor doesn't work

3

Cet extrait peut vous aider:

var expired = new Date(); 
'2012-12-12 08:08'.replace(/(\d{4})-(\d{2})-(\d{2}).*/im, function(str, $1, $2, $3){ 
    expired.setFullYear($1, $2-1, $3); 
}); 
console.log(expired); 
0

Bellow est un JS simple, portable et pure mise en œuvre basée sur le format de date Java:

function date_format(d, p) { 
    var pad = function (n, l) { 
     for (n = String(n), l -= n.length; --l >= 0; n = '0'+n); 
     return n; 
    }; 
    var tz = function (n, s) { 
     return ((n<0)?'+':'-')+pad(Math.abs(n/60),2)+s+pad(Math.abs(n%60),2); 
    }; 
    return p.replace(/([DdFHhKkMmSsyZ])\1*|'[^']*'|"[^"]*"/g, function (m) { 
     l = m.length; 
     switch (m.charAt(0)) { 
       case 'D': return pad(d.getDayOfYear(), l); 
       case 'd': return pad(d.getDate(), l); 
       case 'F': return pad(d.getDayOfWeek(i18n), l); 
       case 'H': return pad(d.getHours(), l); 
       case 'h': return pad(d.getHours() % 12 || 12, l); 
       case 'K': return pad(d.getHours() % 12, l); 
       case 'k': return pad(d.getHours() || 24, l); 
       case 'M': return pad(d.getMonth() + 1, l); 
       case 'm': return pad(d.getMinutes(), l); 
       case 'S': return pad(d.getMilliseconds(), l); 
       case 's': return pad(d.getSeconds(), l); 
       case 'y': return (l == 2) ? String(d.getFullYear()).substr(2) : pad(d.getFullYear(), l); 
       case 'Z': return tz(d.getTimezoneOffset(), ' '); 
       case "'": 
       case '"': return m.substr(1, l - 2); 
       default: throw new Error('Illegal pattern'); 
     } 
    }); 
}; 
console.log(date_format(new Date(), 'yyyy.mm.dd kk:MM:ss Z')); 
console.log(date_format(new Date(), 'MM/dd/yyyy HH:mm:ss')); 

code ci-dessus est basé sur http://llamalab.com/js/date/Date.js (LGPL)

Questions connexes