web-dev-qa-db-fra.com

Heure relative Javascript il y a 24 heures, etc.

J'essaye d'utiliser des highcharts pour afficher des données sur les dernières 24 heures. Le graphique nécessite l'heure de début lorsque vous utilisez le temps pour l'axe des x comme dans cet exemple exemple de temps Highcharts . Je ne sais pas comment lui dire de commencer il y a 24 heures, par exemple, si l'heure était maintenant 22:34 pm le 18, je veux qu'il commence à 22:34 pm le 17. Je ne suis pas très bon avec le code lié à l'heure et à la date et Javascript n'est pas non plus mon point fort. Je crois que j'aurais besoin que la sortie finie soit quelque chose comme: pointStart: Date.UTC(2012, 5, 17, 22, 34) Pour l'exemple ci-dessus, mais je ne sais pas trop comment l'obtenir à partir de Date ().

Edit: Je ne sais pas pourquoi il a été marqué comme un doublon, mais j'essayais d'obtenir une heure relative à l'heure actuelle (maintenant - 24h), pas une représentation sous forme de chaîne relative ("il y a vingt-quatre heures"). L'autre question ne mentionne pas du tout les highcharts.

19
Totoro

Vous devez utiliser des horodatages car vous pouvez calculer avec eux.

Voici comment obtenir l'horodatage actuel: Math.round(new Date().getTime() / 1000) Veuillez noter qu'il s'agit de l'heure locale de l'ordinateur.

Vous pouvez maintenant obtenir l'horodatage il y a 24 heures comme ceci:

var ts = Math.round(new Date().getTime() / 1000);
var tsYesterday = ts - (24 * 3600);

Veuillez voir ce violon: http://jsfiddle.net/Mjm7V/

Edit: Comme Nick l'a correctement souligné, Date#getTime renvoie l'horodatage UTC ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime )

24
Julian Hollmann

C'est en fait assez simple:

var yesterday = new Date(new Date().getTime() - (24 * 60 * 60 * 1000));

Construisez simplement un nouveau Date avec la valeur de l'horodatage actuel moins 24 heures.

(24 heures multipliées par 60 minutes par heure multipliées par 60 secondes par minute multipliées par 1000 millisecondes par seconde)

35
Naftuli Kay

Il y a 24 heures:

new Date(Date.now() - 86400 * 1000).toISOString()

  1. maintenant: new Date().toISOString()
  2. sorties: '2017-02-04T09:15:25.233Z'
  3. Date.now() renvoie les secondes depuis Epoch.
  4. Soustrayez 86400 Secondes dans un jour fois 1000 Pour convertir en millisecondes
  5. sorties: '2017-02-03T09:14:11.789Z'
2
chovy

Il suffit de soustraire le nombre de millisecondes en 24 heures de la date:

new Date (Date.UTC(2012, 5, 17, 22, 34) - 24 * 3600 * 1000)
2
bjornd