Convertir UTC date heure date heure locale
À partir du serveur j'obtiens une variable datetime dans ce format: 6/29/2011 4:52:48 PM
et il est en heure UTC. Je veux convertir le courant navigateur de l'utilisateur en temps à l'aide de JavaScript.
Comment cela peut être fait à l'aide de JavaScript ou jQuery?
- Exemple de Code ici: http://stackoverflow.com/questions/3830418/is-there-a-jquery-plugin-to-convert-utc-datetimes-to-local-user-timezone
- Être prudent. C'est une drôle de format de date, alors assurez-vous de spécifier dans quelle que soit la solution que vous utilisez. Si possible, demandez au serveur d'envoyer la date au format ISO.
Vous devez vous connecter pour publier un commentaire.
Append 'UTC' à la chaîne avant de le convertir à une date en javascript:
.toLocaleString()
utilise les paramètres régionaux de mise en forme spécifique, trop. Cependant, aussi loin que je peux dire à l'entrée doit être dans le format indiqué ici.!
Attention!
_...l'analyse des chaînes date avec le constructeur Date (et la Date.analyser, ils sont l'équivalent) est fortement déconseillée en raison du navigateur différences et incohérences... (qui était probablement encore plus vrai en 2011)getTimezoneOffset()
Doit être en jeu si vous voulez obtenir des résultats corrects pour l'heure d'été dans différents pays.À mon point de vue, les serveurs doivent toujours dans le cas général, de retour d'un datetime dans la normalisé ISO 8601-format.
Plus d'infos ici:
DANS ce cas, le serveur serait de retour
'2011-06-29T16:52:48.000Z'
qui alimenterait directement dans le JS objet Date.La
localDate
sera dans le droit, heure locale, dans mon cas, serait de deux heures plus tard (DK temps).Vous vraiment n'avez pas à faire tout cela, l'analyse qui vient d'complique les choses, aussi longtemps que vous êtes compatible avec ce format à attendre à partir du serveur.
DateTime
objet avec.toString("o")
qui renvoie une ISO-8601 chaîne formatée, comme indiqué ci-dessus. msdn.microsoft.com/en-us/library/zdtaw1bw(v=vs. 110).aspx En javascript, il estnew Date().toISOString()
. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...C'est une solution universelle:
Utilisation:
Affichage de la date en fonction du client sur le cadre local:
Date
objet. Données d'erreur s'affiche lorsque la valeur est proche de l'heure d'été transitions de l'heure locale de la zone. 2. UnDate
objet est à l'intérieur déjà en UTC. C'est seulement lorsque vous utilisez la non-UTC fonctions qu'il convertit en le fuseau horaire local. Donc il n'y a pas une telle chose comme une Date UTC objet par rapport à un Local de l'objet Date.Date
constructeur de l'objet, vous êtes le traiter comme l'heure locale, de sorte que les valeurs de l'heure d'été, printemps-avant sera ajusté à tort.Vous devriez obtenir l' (UTC) décalage (en minutes) du client:
Et ensuite faire le correspondant de l'ajout ou la soustraction à la fois que vous obtenez à partir du serveur.
Espère que cette aide.
Mettre cette fonction dans votre tête:
Ensuite de générer les éléments suivants pour chaque date, dans le corps de votre page:
Pour supprimer le GMT, fuseau horaire, modifiez la ligne suivante:
Pour moi, solutions ci-dessus ne fonctionne pas.
Avec IE la date UTC-temps de la conversion en local est peu délicat.
Pour moi, la date et l'heure à partir de l'API web est
'2018-02-15T05:37:26.007'
et j'ai voulu convertir comme par fuseau horaire local donc j'ai utilisé le code ci-dessous dans le code JavaScript.Après avoir essayé quelques autres à posté ici sans de bons résultats, cela semblait fonctionner pour moi:
Et cela fonctionne à faire le chemin inverse, à partir de la Date Locales à l'UTC:
new Date(+date + date.getTimezoneOffset() * 6e4)
. 😉L'utiliser pour l'heure UTC et l'heure Locale, convertir et vice versa.
Matt réponse est à côté du fait que l'heure d'été pourraient être différents entre Date() et la date de temps il a besoin de convertir - voici ma solution:
Et les résultats dans le débogueur:
Dans le cas où vous n'avez pas l'esprit à l'aide de
moment.js
et de temps en temps UTC suffit d'utiliser la suivante:si votre temps n'est pas au format utc mais tout autre endroit connu de vous, puis utilisez suivantes:
si votre temps est déjà en local, puis utilisez suivantes:
Cela fonctionne pour moi:
C'est une solution simplifiée basée sur Adorjan Princs réponse:
Utilisation:
Ajouter le fuseau horaire à la fin, dans ce cas, 'UTC':
après cela, utilisez toLocale()* familles de fonctions pour afficher la date dans les paramètres régionaux appropriés
Pour moi le plus simple semble à l'aide de
(je pensais que la première ligne pourrait être suffisant, mais il y a des fuseaux horaires qui sont partis dans les fractions d'heures)
new Date('date string')
, puis ajouté ces deux lignes et il semble être de revenir avec une base de temps est complètement éteint le serveur d'horodatage UTC avec des ajustements effectués pour le faire correspondre le local de l'utilisateur en temps. Je ne vous inquiéter à propos de l'étrange fractions d'heures fuseaux horaires trop... vous ne savez Pas si il tient parfaitement tout le temps...À l'aide de
YYYY-MM-DD hh:mm:ss
format :Pour la conversion de la
YYYY-MM-DD hh:mm:ss
format, assurez-vous que votre date suivez les Format ISO 8601.Choses importantes à noter
T
, un espace ne fonctionne pas dans certains navigateurs+hh:mm
, à l'aide d'une chaîne de caractères pour un fuseau horaire (ex. : 'UTC') ne fonctionne pas dans la plupart des navigateurs.+hh:mm
représentent le décalage du fuseau horaire UTC.Un JSON chaîne de date (sérialisé en C#) qui ressemble à des "2015-10-13T18:58:17".
Angulaire, (à la suite de Hulvej) faire un
localdate
filtre:Ensuite, afficher l'heure locale comme:
Je Répondre à Cette Si quelqu un a envie de la fonction que l'affichage converti temps à l'id de l'élément et de les appliquer chaîne de format de date aaaa-mm-jj
ici date1 est string id est l'id de l'élément que le temps va s'afficher.
je sais que la réponse a déjà été accepté, mais je reçois ici à cause de google et je ne résoudre à l'obtention de l'inspiration à partir de accepté de réponse, je voulais juste le partager si besoin de quelqu'un.
@Adorojan's
réponse est presque correct. Mais l'addition de décalage n'est pas correcte, car la valeur de décalage sera négatif si le navigateur de date est en avance sur l'heure GMT, et vice-versa.Ci-dessous est la solution qui est venu avec moi et fonctionne parfaitement bien pour moi:
JS:
Basé sur @digitalbath réponse, voici une petite fonction pour saisir l'horodatage UTC et l'affichage de l'heure locale dans un élément du DOM (à l'aide de jQuery pour cette dernière partie):
https://jsfiddle.net/moriz/6ktb4sv8/1/
J'ai écrit un petit script qui prend un UTC époque et convertit le système du client, le fuseau horaire et le renvoie dans les d/m/Y H:i:s (comme la fonction date de PHP) format:
Vous pouvez utiliser momentjs ,
moment(date).format()
donnera toujours raison dans date locale.Bonus , vous pouvez mettre en forme comme vous le voulez. Pour eg.
Pour plus de détails vous pouvez vous référer Moment js site web
Pour moi, cela fonctionne bien
Pour les autres personnes qui visitent - utilisez cette fonction pour obtenir un Local date d'objet à partir d'une UTC chaîne, doit prendre soin de l'heure d'été et fonctionne sur IE, IPhone, etc.
Nous avons divisé la chaîne (Depuis JS Date de l'analyse n'est pas pris en charge sur certains navigateurs)
Nous obtenons différence de l'UTC et de la soustraire à l'heure UTC, ce qui nous donne l'heure locale. Depuis décalage renvoyé est calculé avec l'heure d'été (corrigez-moi si je me trompe), donc il ne sera réglé que les temps de retour dans la variable "utc". Enfin de retour de l'objet date.
Angulaire j'ai utilisé Ben la réponse de cette façon:
Edit: Angulaire 1.3.0 ajouté UTC support de filtre de date, je n'ai pas encore, mais il devrait être plus facile, voici le format:
Angulaire 1.4.3 Date de l'API