сравнение строки даты с текущей датой () - PullRequest
0 голосов
/ 18 ноября 2018

Итак, у меня уже есть переменная, которая содержит все ячейки в определенном столбце. каждая ячейка содержит, как и innerText, метку времени, отформатированную таким образом, гггг-мм-дд чч: мм в формате 24 ч.

Как мне сравнить полученную строку с Date (), чтобы увидеть, находится ли строка в течение следующего часа?

Я думал, что цикл for должен проходить через массив с функцией if внутри, говорящей «если показанное время находится в пределах часа от текущего времени, тогда измените цвет фона ячейки на красный.

for(var i=0; i<column.length;i++){
  if(column[i].innerText - Date() < 1hr){   //this line needs work
    column[i].style.backgroundColor='#ff000';
  } else(){
    }
};

Я уверен, что, возможно, нужно использовать какой-то метод разбора или что-то в этом роде, но я не слишком знаком с ним.

примечание: я использую Tampermonkey, чтобы внедрить код в страницу, которую я не могу контролировать, поэтому временные метки такие же, как и у меня.

Ответы [ 3 ]

0 голосов
/ 18 ноября 2018

Конструктор даты выполняет всю работу за вас.Итак, что-то вроде этого будет всем, что вам нужно:

hour = 3600000 //1 hour in ms
nextHour = new Date(column[i].innerText) - new Date()
if(nextHour <= hour && nextHour >= 0) {
    //Your code here
}

Объяснение:

Поскольку Javascript Date основан на миллисекундах с полуночи 1 января 1970 года, - (минус) оператор позволяет обрабатыватьоно как число и возвращает полученное число как число.

0 голосов
/ 18 ноября 2018

Вы можете пойти с подходом ниже.Здесь я использовал getUTCHours(), потому что new Date(new Date(columns[i].innerText) - new Date()) даст метку времени UTC.Вы можете найти объяснение о времени UTC от здесь

var columns;

function changecolors() {
  columns = document.getElementsByClassName('column');
  for (var i = 0; i < columns.length; i++) {
    if (new Date(new Date(columns[i].innerText) - new Date()).getUTCHours() < 1) {
      columns[i].style.backgroundColor = '#ff0000';
    }
  };
}
<div class="column">2018-11-18 09:30</div>
<div class="column">2018-11-18 11:00</div>

<button onclick="changecolors()">Change Colors</button>
0 голосов
/ 18 ноября 2018

Изменить это:

if(column[i].innerText - Date() < 1hr){

К этому:

var hourNow = new Date().getHours();
var hourColumn = Number(column[].innerText.split("")[11] + "" + column[].innerText.split("")[12]);
if (hourNow + 1 >= hourColumn || hourColumn + 1 <= hourNow) {

И это должно работать.

...