2010-07-08 10 views
1

L'horodatage que je reçois de la réponse SOAP d'un serveur est formaté en notation européenne et en heure GMT (ex: 08/07/2010 11:22:00 AM). Je veux le convertir en heure locale et changer le formatage en (MM/DD/2010 HH: MM: SS AM/PM).Convertir l'horodatage GMT (JJ/MM/AAAA) en heure locale (MM/JJ/AAAA) en JavaScript

Je connais l'objet Date JavaScript, mais je n'arrive pas à comprendre la logique de la conversion. Quelqu'un peut-il m'aider?

+0

La solution a-t-elle fonctionné pour vous? – naikus

Répondre

0
var serverTimestamp = storArray[a][0]; 
var pieces = serverTimestamp.split('/'); 
storArray[a][0] = pieces[1] + '/' + pieces[0] + '/' + pieces[2]; 
var gmt = new Date(storArray[a][0]); 
var localTime = gmt.getTime() - (gmt.getTimezoneOffset() * 60000); // convert gmt date to minutes 
var localDate = new Date(localTime); // convert it into a date 
+0

C'est ce que j'ai fini par faire. La variable storArray est l'endroit dans le tableau où l'horodatage est –

+0

Pourquoi ne pas simplement ajouter le timezoen et convertir la chaîne? – Lobo

0
function switchFormat(dateString) { 
    var a = dateString.split('/'), 
     b; 
    b = a[0]; 
    a[0] = a[1]; 
    a[1] = b; 
    return a.join('/'); 
} 

Edité

Try it here

1

Avez-vous vraiment besoin d'objets de date pour cela? Si tout ce que vous faites est la commutation des deux premières parties d'une chaîne de ce format exact,

var pieces = str.split('/'); 
str = pieces[1] + '/' + pieces[0] + '/' + pieces[2]; 
+0

Cela a fonctionné très bien pour changer le formatage, mais j'ai aussi besoin d'ajuster l'heure de GMT à local. –

1

dates parse utilisant:

Date.parse("08/07/2010 11:22:00 AM"); 

Pour convertir la date GMT à jour locale (une sur la navigateur ou js useragent) utilisent la fonction suivante:

 function getLocalTime(gmt) { 
     var min = gmt.getTime()/1000/60; // convert gmt date to minutes 
     var localNow = new Date().getTimezoneOffset(); // get the timezone 
                 // offset in minutes    
     var localTime = min - localNow; // get the local time 
     return new Date(localTime * 1000 * 60); // convert it into a date 
    } 

    var dt = new Date(Date.parse("08/07/2010 11:22:00 AM")); 
    var localDate = getLocalTime(dt); 

suivant est mise à jour, ce qui est tout à fait simple. Appelez les fonctions suivantes à la date (locale) que vous venez d'obtenir:

localDate.getXXX(); // where XXX is Hour, Minutes, etc. 

Remarque: Testé en FF. Tweak comme requis dans d'autres navigateurs :)

+0

Mon erreur: ma formule de conversion minute était bêtement erronée. Cela fonctionne maintenant comme désiré. – naikus

1

Je sais que c'est un an et a une réponse acceptée. Au cas où quelqu'un viendrait chercher ...

Vous pouvez ajouter les informations de fuseau horaire à la chaîne formatée et créer un objet date pour obtenir ce que vous voulez.

var x = "08/07/2010 11:22:00 AM".split('/'); 
var d = new Date(x[1] + '/' + x[0] + '/' + x[2] + " GMT"); 

jsfiddle

Juste pour vous assurer que je comprends ce que tu voulais, je courais la réponse accpeted avec cela, à la fois le même résultat.

Questions connexes