115 votes

Comment ignorer le fuseau horaire de l'utilisateur et forcer Date() à utiliser un fuseau horaire spécifique

Dans une application JS, je reçois l'horodatage (eq. 1270544790922) du serveur (Ajax).

Sur la base de cet horodatage, je crée Date objet en utilisant :

var _date = new Date();
_date.setTime(1270544790922);

Maintenant, _date estampille temporelle décodée dans le fuseau horaire actuel des paramètres régionaux de l'utilisateur. Je ne veux pas de ça.

Je voudrais _date convertir cet horodatage en heure actuelle dans la ville d'Helsinki en Europe (sans tenir compte du fuseau horaire actuel de l'utilisateur).

Comment je peux faire ça ?

20voto

dheeran Points 2004

Une autre approche

function parseTimestamp(timestampStr) {
  return new Date(new Date(timestampStr).getTime() + (new Date(timestampStr).getTimezoneOffset() * 60 * 1000));
};

//Sun Jan 01 2017 12:00:00
var timestamp = 1483272000000;
date = parseTimestamp(timestamp);
document.write(date);

À la tienne !

20voto

Ehren Points 131

Pour tenir compte des millisecondes et du fuseau horaire de l'utilisateur, utilisez ce qui suit :

var _userOffset = _date.getTimezoneOffset()*60*1000; // user's offset time
var _centralOffset = 6*60*60*1000; // 6 for central time - use whatever you need
_date = new Date(_date.getTime() - _userOffset + _centralOffset); // redefine variable

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X