Obtenez de l'horodatage actuel de spécifique fuseau horaire
est-il un moyen facile pour obtenir le timestamp unix en javascript à partir d'un fuseau horaire? par exemple je veux que le client m'envoyer un timestamp unix, mais je veux la faire pour correspondre à mon fuseau horaire.
Pourquoi ne pas simplement envoyer la date de l'UTC, et ensuite de les convertir à votre fuseau horaire sur le serveur?
var utcEpochSeconds = dateObj.getTime()+(dateObj.getTimezoneOffset()*60000);
De loin la meilleure solution depuis la machine locale ne le sait pas nécessairement le décalage horaire du serveur. Ne peut toujours pas pourquoi il n'y a pas un dateObj.getUTCTime() méthode.
UTC est toujours la même chose, n'importe quoi? (je suis nul dans le fuseau horaire des trucs)
mais si je compare mon local avec l'heure UTC im 8 heures de repos?! (im dans LA timezone)
Eh bien, oui, parce que vous êtes aux états-unis fuseau Horaire du Pacifique, qui est de huit heures après l'UTC. En supposant que l'horloge de votre système et le fuseau horaire sont configurés correctement, votre UTC résultat doit correspondre à l'UTC résultat de partout ailleurs dans le monde, avec seulement quelques secondes de la dérive.
Utilisation toISOString pour obtenir un horodatage UTC.
var date =newDate();
date.toISOString();//EST would be 6 hour diff from GMT
toISOString() est ES5 et pas encore pris en charge par un bon pourcentage de navigateurs web en cours d'utilisation. Pas difficile à imiter pour ceux qui manquent de bien.
N'est-il pas simplement de vieux IE qui ne le supporte pas? 😛 de toute façon, créer une cale d'épaisseur.
Pour que cela se produise, vous devez appliquer le fuseau horaire à l'heure, puis retirez le décalage à partir de la valeur (tester cela, je devine à partir de la mémoire):
var now =newDate(),
offset =-(now.getTimezoneOffset()*60*1000),//now in milliseconds
userUnixStamp =+now + offset;
Maintenant offset à partir de votre propre:
var now =newDate(),
offset = now.getTimezoneOffset()*60*1000,
yourUnixStamp = userUnixStamp - offset;
pourriez-vous enveloppez-la dans un exemple où le client, peu importe ce que renvoie la même heure pour los angeles? cause je ne peux pas envelopper mon esprit autour de lui en ce moment... j'obtiens des résultats différents. *brainmelt
Pourriez-vous expliquer la situation un peu plus? Où est la date à venir? Comment en êtes-vous à elle?
j'ai besoin de garder n'importe quel fuseau horaire du client, à la même heure le serveur - j'ai déjà l'heure du serveur UTC juste pour rendre les choses plus facile, maintenant, j'ai essayé de générer de l'heure UTC avec ceci: var d = new Date(); var heure utc = Math.tour d.getTime() + ( d.getTimezoneOffset() * 60000 ) / 1000 ); mais il retourne toujours une microtime (pourquoi?! il y a une /1000) timestamp qui est de 8 heures d'avance...
Pourquoi ne pas simplement envoyer la date de l'UTC, et ensuite de les convertir à votre fuseau horaire sur le serveur?
dateObj.getUTCTime()
méthode.Utilisation
toISOString
pour obtenir un horodatage UTC.toISOString()
est ES5 et pas encore pris en charge par un bon pourcentage de navigateurs web en cours d'utilisation. Pas difficile à imiter pour ceux qui manquent de bien.Pour que cela se produise, vous devez appliquer le fuseau horaire à l'heure, puis retirez le décalage à partir de la valeur (tester cela, je devine à partir de la mémoire):
Maintenant offset à partir de votre propre: