2013-06-13 4 views
2

Je travaille sur une application Web où un utilisateur peut définir son fuseau horaire dans l'application qui est ensuite utilisée dans l'application pour diverses conversions date/heure. Le fuseau horaire sélectionné peut être différent du fuseau horaire de l'utilisateur.Convertir la date d'un fuseau horaire en un autre fuseau horaire en utilisant les abréviations de fuseau horaire

Je suis actuellement bloqué sur un problème où j'ai besoin de comparer une date sélectionnée par l'utilisateur (que l'utilisateur suppose être dans le fuseau horaire sélectionné par lui dans l'application) avec la date actuelle pour voir si la date sélectionnée est date à l'avenir. En référence à tous les endroits que j'ai cherché, j'ai trouvé que je peux obtenir la date actuelle dans les paramètres régionaux de l'utilisateur ou l'heure UTC. Donc, l'essentiel de mon problème est - Y at-il un moyen de convertir une date d'un fuseau horaire à l'autre en utilisant les abréviations de fuseau horaire?

J'ai beaucoup cherché avant de poster ici, mais je n'ai pas trouvé de solution. La plupart des endroits que j'ai trouvés pendant ma recherche suggèrent qu'il n'y a aucune telle solution disponible.

J'ai essayé d'utiliser date.js mais cela ne suffit pas car il est assez obsolète et les abréviations de fuseau horaire supportées par lui sont un ensemble très limité. J'ai également jeté un coup d'oeil à timezoneJS mais je ne pense pas que cela fonctionne avec les abréviations de timezone.

Y a-t-il un moyen de le faire en utilisant javascript ou jquery?

Répondre

4

Ici, vous allez:

// calculate local time in a different city given the city's UTC offset 
function calcTime(city, offset) { 

    // create Date object for current location 
    var date = new Date(); 

    // convert to msec 
    // add local time zone offset 
    // get UTC time in msec 
    var utc = date.getTime() + (date.getTimezoneOffset() * 60000); 

    // create new Date object for different city 
    // using supplied offset 
    var newDate = new Date(utc + (3600000 * offset)); 

    // return time as a string 
    return "The local time in " + city + " is " + newDate.toLocaleString(); 
} 

// get Bombay time 
console.log(calcTime('Bombay', '+5.5')); 

// get Singapore time 
console.log(calcTime('Singapore', '+8')); 

// get London time 
console.log(calcTime('London', '+1')); 
+1

Merci pour la réponse ... cela fonctionne pour tous les fuseaux horaires où l'économie de la lumière du jour n'est pas actif. S'il vous plaît dites-moi, comment le faire fonctionner pour les fuseaux horaires avec l'heure d'été? –

+0

Oui. Ce n'est pas un construit en JScript. C'est une conversion calculée. –

+0

Si vous utilisez timezone-js, voici le code: var dt = new timezoneJS.Date ("2012/04/10 10:10:30 +0000", 'Europe/London'); dt.setTimezone ("Asie/Jakarta"); console.debug (dt); // retourne une date-heure formatée en asie/jakarta –

Questions connexes