Du serveur, j'obtiens une variable datetime dans ce format: 6/29/2011 4:52:48 PM
et elle est en temps UTC. Je veux le convertir à l'heure du navigateur de l'utilisateur actuel en utilisant JavaScript.
Comment cela peut-il être fait en utilisant JavaScript ou jQuery?
Réponses:
Ajoutez 'UTC' à la chaîne avant de la convertir en date en javascript:
la source
!
Attention!
_ … l'analyse des chaînes de date avec le constructeur Date (et Date.parse, ils sont équivalents) est fortement déconseillée en raison des différences et des incohérences du navigateur… (ce qui était probablement encore plus vrai en 2011)À mon avis, les serveurs devraient toujours, dans le cas général, renvoyer une date / heure au format ISO 8601 normalisé .
Plus d'infos ici:
Dans ce cas, le serveur retournerait
'2011-06-29T16:52:48.000Z'
ce qui alimenterait directement l'objet JS Date.Le
localDate
sera dans la bonne heure locale qui dans mon cas serait deux heures plus tard (heure DK).Vous n'avez vraiment pas besoin de faire toute cette analyse qui complique simplement les choses, tant que vous êtes cohérent avec le format à attendre du serveur.
la source
DateTime
objet avec.toString("o")
lequel renvoie une chaîne formatée ISO-8601 comme indiqué ci-dessus. msdn.microsoft.com/en-us/library/zdtaw1bw(v=vs.110).aspx En javascript c'estnew Date().toISOString()
. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Il s'agit d'une solution universelle:
Usage:
Affichez la date en fonction du paramètre local du client:
la source
Vous devez obtenir le décalage (UTC) (en minutes) du client:
Et puis faites l'ajout ou la soustraction correspondant au temps que vous obtenez du serveur.
J'espère que cela t'aides.
la source
Pour moi, les solutions ci-dessus n'ont pas fonctionné.
Avec IE, la conversion de date-heure UTC en local est peu délicate. Pour moi, la date-heure de l'API Web est
'2018-02-15T05:37:26.007'
et je voulais convertir selon le fuseau horaire local, j'ai donc utilisé le code ci-dessous en JavaScript.la source
Mettez cette fonction dans votre tête:
Générez ensuite les éléments suivants pour chaque date dans le corps de votre page:
Pour supprimer le GMT et le fuseau horaire, modifiez la ligne suivante:
la source
Cela fonctionne pour moi:
la source
Après avoir essayé quelques autres postés ici sans bons résultats, cela a semblé fonctionner pour moi:
Et cela fonctionne dans le sens inverse, de la date locale à l'UTC:
la source
new Date(+date + date.getTimezoneOffset() * 6e4)
. ;-)Ajoutez le fuseau horaire à la fin, dans ce cas 'UTC':
après cela, utilisez les familles de fonctions toLocale () * pour afficher la date dans les paramètres régionaux corrects
la source
La réponse de Matt ne tient pas au fait que l'heure d'été pourrait être différente entre Date () et l'heure à laquelle il doit être converti - voici ma solution:
Et les résultats dans le débogueur:
la source
Utilisez-le pour l'UTC et la conversion de l'heure locale et vice versa.
la source
Il s'agit d'une solution simplifiée basée sur la réponse d'Adorjan Princ:
Usage:
la source
Dans le cas où cela ne vous dérange pas d'utiliser
moment.js
et que votre temps est en UTC, utilisez simplement ce qui suit:si votre heure n'est pas en utc mais en tout autre lieu connu de vous, alors utilisez ce qui suit:
si votre heure est déjà en local, utilisez alors:
la source
Pour moi, le plus simple semblait utiliser
(Je pensais que la première ligne pourrait être suffisante mais il y a des fuseaux horaires qui sont désactivés en quelques fractions d'heures)
la source
new Date('date string')
, puis j'ai ajouté ces deux lignes et il semble revenir avec une heure basée entièrement sur l'horodatage UTC du serveur avec des ajustements pour l'adapter à l'heure locale de l'utilisateur. Je dois aussi m'inquiéter des étranges fuseaux horaires de fractions d'heure ... Je ne sais pas si ça résiste parfaitement tout le temps ...Une chaîne de date JSON (sérialisée en C #) ressemble à "2015-10-13T18: 58: 17".
En angulaire, (suivant Hulvej) faites un
localdate
filtre:Ensuite, affichez l'heure locale comme:
la source
En utilisant le
YYYY-MM-DD hh:mm:ss
format:Pour convertir à partir du
YYYY-MM-DD hh:mm:ss
format, assurez-vous que votre date respecte le format ISO 8601 .Choses importantes à noter
T
, un espace ne fonctionnera pas dans certains navigateurs+hh:mm
, en utilisant une chaîne pour un fuseau horaire (ex.: 'UTC') ne fonctionnera pas dans de nombreux navigateurs.+hh:mm
représentent le décalage par rapport au fuseau horaire UTC.la source
@Adorojan's
la réponse est presque correcte. Mais l'ajout de décalage n'est pas correct car la valeur de décalage sera négative si la date du navigateur est en avance sur GMT et vice versa. Ci-dessous est la solution avec laquelle je suis venu et fonctionne parfaitement bien pour moi:la source
Pour moi, cela fonctionne bien
la source
I Répondre à cette question si quelqu'un souhaite une fonction qui affiche l'heure convertie en élément id spécifique et applique la chaîne de format de date aaaa-mm-jj ici date1 est une chaîne et ids est l'id de l'élément que l'heure va afficher.
Je sais que la réponse a déjà été acceptée, mais je viens ici à cause de Google et j'ai résolu en m'inspirant de la réponse acceptée, donc je voulais simplement la partager si quelqu'un en avait besoin.
la source
Basé sur la réponse @digitalbath, voici une petite fonction pour récupérer l'horodatage UTC et afficher l'heure locale dans un élément DOM donné (en utilisant jQuery pour cette dernière partie):
https://jsfiddle.net/moriz/6ktb4sv8/1/
la source
J'ai écrit un joli petit script qui prend une époque UTC et le convertit en fuseau horaire du système client et le renvoie au format d / m / YH: i: s (comme la fonction de date PHP):
la source
Vous pouvez utiliser momentjs ,
moment(date).format()
donnera toujours le résultat en date locale .Bonus , vous pouvez formater comme vous le souhaitez. Par exemple.
Pour plus de détails, vous pouvez vous référer au site Moment js
la source
Vous pouvez le faire en utilisant le fichier moment.js .
C'est simple, vous venez de mentionner l'emplacement du fuseau horaire.
Exemple: si vous convertissez votre datetime en fuseau horaire Asia / Kolkata, il vous suffit de mentionner le nom du fuseau horaire obtenu à partir de moment.js
la source
J'ai créé une fonction qui convertit tous les fuseaux horaires en heure locale.
Je n'ai pas utilisé getTimezoneOffset (), car il ne renvoie pas la bonne valeur de décalage
Exigences:
la source
Dans mon cas, j'ai dû trouver la différence de dates en quelques secondes. La date était une chaîne de date UTC, je l'ai donc convertie en objet de date local. C'est ce que j'ai fait:
la source
Pour ceux qui visitent - utilisez cette fonction pour obtenir un objet de date locale à partir d'une chaîne UTC, devrait prendre en charge l'heure d'été et fonctionnera sur IE, IPhone, etc.
Nous séparons la chaîne (étant donné que l'analyse de date JS n'est pas prise en charge sur certains navigateurs) Nous obtenons la différence d'UTC et la soustrayons de l'heure UTC, ce qui nous donne l'heure locale. Puisque l'offset retourné est calculé avec DST (corrigez-moi si je me trompe), il remettra donc ce temps dans la variable "utc". Enfin, renvoyez l'objet date.
la source
Dans Angular, j'ai utilisé la réponse de Ben de cette façon:
Edit: Angular 1.3.0 a ajouté le support UTC au filtre de date, je ne l'ai pas encore utilisé mais cela devrait être plus facile, voici le format:
API de date angulaire 1.4.3
la source