2010-05-18 6 views
1

J'ai un temps en millisecondes, c'est-à-dire 1274203800000, maintenant je veux le convertir en GMT + 10 en javascript.Millisecondes à diverses conversions GMT fuseaux horaires

actuellement je suis en utilisant le code suivant pour faire

var milliseconds=1274203800000; 
var offset='+10'; 
var d = new Date(milliseconds); 
utc = d.getTime() + (d.getTimezoneOffset() * 60000); 
nd = new Date(utc + (3600000*offset)); 
var result=nd.toLocaleString(); 
alert(result); 

code ci-dessus évalue à ce jour « mercredi 19 mai 2010 3:30:00 AM », mais ce n'est pas la sortie correcte comme « mardi, 18 mai 2010 3:30:00 AM "(pas sûr de l'AM ou PM dans ce cas) est le bon. Mais je ne sais pas quel est le problème ici.

Mon heure locale actuelle est GMT + 0530.

Répondre

3

Ici je peux obtenir la sortie désirée

var milliseconds=1274203800000; 
var offset=10; 
var d = new Date(milliseconds+(3600000*offset)); 
alert(d.toUTCString()); 

Initial Input: Tue, 18 May 2010 17:30:00 GMT 
Desired Output: Wed, 19 May 2010 03:30:00 GMT 
2

Les horodatages sont conservés en UTC. 1274203800000 correspond à 2010-05-18 17:30:00 UTC, ce qui est en effet 2010-05-19 03:30:00 UTC+10. Je ne sais pas comment vous obtiendriez 2010-05-18 03:30:00 à partir de cet horodatage - il faudrait que ce soit UTC-14, et aucun pays n'a cela comme fuseau horaire.

(A part. Dans votre code tel qu'il est, la première utilisation de new Date().getTime() ne fait rien que ça va revenir le même milliseconds)

ETA: Vous ne recevez aucun contrôle pas sur le format de toLocaleString(), le format provient des paramètres du système d'exploitation et du navigateur de l'utilisateur. Sur ma machine ici, je reçois une horloge de 12 heures et un nom de fuseau horaire inclus. Ce qui est ennuyeux, car je pense que 12-hour time is a total disaster that should be wiped from the face of the planet et le fuseau horaire est vraiment faux. Mais de toute façon, si vous voulez un format d'heure spécifique, vous devrez le créer vous-même, car JS n'offre aucune option de formatage. Cela peut être assez fastidieux:

var daynames= ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; 
var monthnames= ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; 
function padLeft(s, l, c) { 
    return new Array(l-s.length+1).join(c || ' ')+s; 
}; 

function to12HourTime(x) { 
    var dn= daynames[x.getUTCDay()]; 
    var mn= monthnames[x.getUTCMonth()]; 
    var d= padLeft(''+x.getUTCDate(), 2, '0'); 
    var y= padLeft(''+x.getUTCFullYear() ,4, '0'); 
    var h= x.getUTCHours(); 
    var m= padLeft(''+x.getUTCMinutes(), 2, '0'); 
    var s= padLeft(''+x.getUTCSeconds(), 2, '0'); 
    var p= h>=12? 'PM' : 'AM'; 
    h= (h+11)%12+1; 
    return dn+', '+mn+' '+d+', '+y+' '+h+':'+m+':'+s+' '+p; 
} 

var t= 1274203800000; 
var d= new Date(t+1000*60*60*10); 
alert(to12HourTime(d)); 
// Wednesday, May 19, 2010 3:30:00 AM 
+0

Eh bien, je ne savais pas vers UTC finalement si je si veux convertir 1274203800000 en GMT + 10 est alors il des options disponibles en javascript? – hunt

+1

Vous avez déjà. '1274203800000' ** est ** 2010-05-19 03:30:00 UTC + 10'. Si vous utilisez le nombre '1274203800000' pour représenter une autre heure, alors ce que vous avez n'est pas un horodatage JavaScript standard, et vous devrez déterminer exactement ce que c'est. – bobince

+0

Vous avez raison, c'est déjà +10 maintenant, comment puis-je le convertir en format 12hr? – hunt

0

1274203800000 en Epoch est Mar 18 mai 2010 17:30:00 GMT

(vous pouvez utiliser ce convertisseur Epoch http://www.epochconverter.com/)

Maintenant, si vous faites :

var milliseconds=1274203800000; 
var d = new Date(milliseconds); 
alert(d.toUTCString()); 

Vous obtenez l'heure GMT correcte.

+0

merci, pour l'heure GMT comme actuellement il me donne Tue, 18 mai 2010 17:30:00 maintenant je veux ajouter +10 en elle, alors quelles options sont disponibles pour cela – hunt

+0

je pense qu'il est déjà +10 comme Bobince dit Maintenant, comment pourrais-je le convertir en format 12hr? – hunt

Questions connexes