setHours () javascript возвращает другой формат, чем ожидалось - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть ситуация, когда мне нужно использовать JavaScript

setTime ()

, чтобы я мог изменить время в соответствии с числомсекунд у меня есть.Например, я хочу знать, во сколько это было 1400 секунд назад.

Я пришел к выводу, что моим самым чистым и лучшим решением было бы использование комбинации

getDate () и setHours () - setMinutes () - setSeconds () как в примере по этой ссылке: https://codepen.io/Jaquelline/pen/rPgOKj?editors=1011

function myFunction() {
var myTime = new Array();
    for(i=0; i <3599; i++){
     var d = new Date();
     var currentI = 3599-i;
        myTime[i] = new Array();
        myTime[i] = {
          x: i,
          y: d.setHours(d.getHours()-1) + ':' + d.setMinutes(d.getMinutes()) + ':'+ d.setSeconds(d.getSeconds()+currentI)
        };
    }

var s = JSON.stringify(myTime);
document.getElementById("cTimeArray").innerHTML =s;


 var t = new Date();
 t.setHours(t.getHours()-1);
 t.setHours(t.getMinutes());
 t.setHours(t.getSeconds()+1200);
 document.getElementById("cTime").innerHTML =t;
}

Переменная s возвращает что-то вроде этого:

[{"x": 0, "y": "1550821508351: 1550821508351:1550825107351 "}, {" x ": 1," y ":" 1550821508351: 1550821508351: 1550825106351 "},

Пока t и возвращает:

вс 14 апреля 2019 08:45:08 GMT + 0200 (Mitteleuropäische Sommerzeit)

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Вы не показываете правильное значение.

Установите d ранее и используйте получатели, чтобы показать значение.

var myTime = new Array();

for (i = 0; i < 3599; i++) {
  var d = new Date();
  var currentI = 3599 - i;
  myTime[i] = {};

  d.setHours(d.getHours() - 1);
  d.setMinutes(d.getMinutes());
  d.setSeconds(d.getSeconds() + currentI);
  myTime[i] = {
    x: i,
    y: d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds()
  };
}

var s = JSON.stringify(myTime);
console.log(s);
0 голосов
/ 22 февраля 2019

Если вы просто хотите узнать время 1400 секунд назад, то почему бы просто не вычесть 1400 секунд из текущего времени?

var past = new Date((new Date().getTime()) - 1400 * 1000);

getTime() возвращает метку времени, представляющую дату / время в миллисекундах,отсюда умножение 1400 на 1000.

...