web-dev-qa-db-fra.com

Utiliser JavaScript pour convertir une chaîne de date avec fuseau horaire en un objet date en heure locale

Le format de ma chaîne de date ressemble à ceci: yyyy-MM-ddTHH:mm:ss-0Z00

Exemple 1: 2010-03-05T07:03:51-0800

Exemple 2: 2010-07-01T20:23:00-0700

J'ai besoin de créer un objet date à l'aide de ces chaînes de date. new Date() ne fonctionne pas sur cette chaîne. Aidez-moi à convertir ces chaînes de date en objets de date avec le fuseau horaire local.

Merci!

Edit: J'utilise ceci dans Pentaho Data Integration 4.3.0.

28
Marina

Vous pouvez utiliser une bibliothèque telle que Moment.js pour ce faire.

Voir l'analyse String + Format.

http://momentjs.com/docs/#/parsing/string-format/

Les éléments suivants devraient analyser la date que vous avez fournie, mais vous devrez peut-être la modifier selon vos besoins.

var oldDate = "2010-03-05T07:03:51-0800";

var dateObj = moment(oldDate, "YYY-MM-DDTHH:mm:ssZ").toDate();

Vous pouvez également voir l'analyseur de chaînes de Moment, qui semble avoir le format que vous avez fourni, à l'exception d'un espace entre les secondes de l'heure et le fuseau horaire.

http://momentjs.com/docs/#/parsing/string/

Alternative

Une deuxième façon de procéder est Date.js, une autre bibliothèque qui semble bien analyser le format. http://www.datejs.com

18
Andrew M

Prenons mon fuseau horaire comme exemple (AEST):

function parseDate(str_date) {
  return new Date(Date.parse(str_date));
}


var str_date = "2015-05-01T22:00:00+10:00"; //AEST time
var locale_date = parseDate(str_date);

locale_date: ven 01 mai 2015 22:00:00 GMT + 1000 (AEST)

var str_date = "2015-05-01T22:00:00+00:00" //UTC time
var locale_date = parseDate(str_date);

locale_date: sam.02 mai 2015 08:00:00 GMT + 1000 (AEST)

20
Leo

Chaîne de date:

var strDate = "2010-07-01T20:23:00-0700";

Pour la représentation de l'heure locale dans un objet Date JS natif:

var ltzDate = (new Date(strDate)).toLocaleString();

11
Joe Johnson