Je me bats avec ça depuis un petit moment maintenant. J'essaie de convertir epoch en objet date. L'époque m'est envoyée en UTC. Chaque fois que vous passez new Date()
une époque, cela suppose que c'est une époque locale. J'ai essayé de créer un objet UTC, puis setTime()
de l'ajuster à l'époque appropriée, mais la seule méthode qui semble utile est toUTCString()
que les chaînes ne m'aident pas. Si je passe cette chaîne à une nouvelle date, il devrait remarquer que c'est UTC, mais ce n'est pas le cas.
new Date( new Date().toUTCString() ).toLocaleString()
Ma prochaine tentative a été d'essayer de faire la différence entre l'époque actuelle locale et l'époque actuelle UTC, mais je n'ai pas pu l'obtenir non plus.
new Date( new Date().toUTCString() ).getTime() - new Date().getTime()
Cela ne me donne que de très petites différences, inférieures à 1000, ce qui est en millisecondes.
Aucune suggestion?
la source
Réponses:
Je pense que j'ai une solution plus simple - définir la date initiale à l'époque et ajouter des unités UTC. Supposons que vous ayez une variable d'époque UTC stockée en quelques secondes. Que diriez-vous
1234567890
. Pour convertir cela en une date correcte dans le fuseau horaire local:d
est maintenant une date (dans mon fuseau horaire) définie surFri Feb 13 2009 18:31:30 GMT-0500 (EST)
la source
var d = new Date(utcSeconds * 1000)
devrait donner le même résultat.var d = new Date(1234567890000)
retourne le même résultatC'est facile, cela
new Date()
prend juste des millisecondes, par exemplela source
const d = new Date(epoch * 1000)
.Et juste pour les journaux, je l'ai fait en utilisant la bibliothèque Moment.js , que j'utilisais pour le formatage de toute façon.
la source
L'époque est en secondes à partir du 1er janvier 1970.
date.getTime()
renvoie les millisecondes à partir du 1er janvier 1970, donc .. si vous avez un horodatage d'époque, convertissez-le en horodatage javascript en multipliant par 1000.la source
la source
Pour convertir l'heure actuelle en [ms] en 24 heures. Vous devrez peut-être spécifier l'option pour désactiver le format 12 heures .
ou en tant que JS:
Remarque: L'utilisation d'
en-GB
ici, n'est qu'un choix (aléatoire) d'un lieu au format 24 heures, ce n'est pas votre fuseau horaire!la source
d/m/yyyy
ou est-cem/d/yyyy
? Le droit ( le plus logique) façon d'afficher cela devrait être:yyyy-mm-dd
. N'importe quels preneurs?Le temps Epoch (c'est-à-dire le temps Unix) est presque toujours le nombre de secondes qui ont expiré depuis le 1er janvier 1970 à 00:00:00 (heure UTC), pas le nombre de millisecondes que certaines des réponses ici impliquent.
https://en.wikipedia.org/wiki/Unix_time
Par conséquent, si vous avez reçu une valeur de temps Epoque Unix, elle sera probablement en secondes et ressemblera à quelque chose
1547035195
. Si vous souhaitez rendre cet humain lisible en JavaScript, vous devez convertir la valeur en millisecondes et transmettre cette valeur auDate(value)
constructeur, par exemple:Vous n'avez pas besoin de faire l'
d.setUTCMilliseconds(0)
étape de la réponse acceptée car leDate(value)
constructeur JavaScript prend une valeur UTC en millisecondes (pas une heure locale).https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#Syntax
Notez également que vous devez éviter d'utiliser le
Date(...)
constructeur qui prend une représentation chaîne de données, ce n'est pas recommandé (voir le lien ci-dessus).la source
Demandez-vous simplement de convertir une chaîne UTC en une chaîne "locale"? Vous pourriez faire:
la source
Ajout à la réponse ci-dessus par @djechlin
convertit l'heure EPOCH en date lisible par l'homme. N'oubliez pas que ce type de temps EPOCH doit être un entier.
la source
La solution la plus simple que j'ai trouvée à ce sujet est:
Notez que cela n'a pas
* 1000
la fin de lanew Date(timestamp)
déclaration car cela (pour moi en tout cas!) Semble toujours donner la mauvaise date, c'est-à-dire qu'au lieu de donner l'année 2019, cela donne l'année comme 51015, alors gardez cela à l'esprit.la source
Si vous préférez résoudre les horodatages et les conversions de dates de et vers UTC et l'heure locale sans bibliothèques comme moment.js, jetez un œil à l'option ci-dessous.
Pour les applications qui utilisent les horodatages UTC, vous devrez peut-être afficher la date dans le navigateur en tenant compte du fuseau horaire local et de l'heure d'été, le cas échéant. Modifier une date qui se trouve à une heure d'été différente, même si dans le même fuseau horaire, peut être délicat.
Les extensions
Number
etDate
ci-dessous vous permettent d'afficher et d'obtenir des dates dans le fuseau horaire des horodatages. Par exemple, disons que vous êtes à Vancouver, si vous modifiez une date en juillet ou en décembre, cela peut signifier que vous modifiez une date en PST ou PDT.Je vous recommande de vérifier l'extrait de code ci-dessous pour tester cette solution.
Conversions en millisecondes
Conversions de dates
Usage
Voyez par vous-même
Afficher l'extrait de code
la source
ÉDITER
EDIT fixe
la source
Considérant que vous disposez
epoch_time
,la source
var myDate = new Date( your epoch date *1000);
source - https://www.epochconverter.com/programming/#javascript
la source
@Amjad, bonne idée, mais une meilleure implémentation serait:
la source
Convertissez-le d'abord en chaîne, puis remplacez le texte du fuseau horaire.
la source