Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как правильно сравнить время (native javascript)? (https://javascript.ru/forum/dom-window/76521-kak-pravilno-sravnit-vremya-native-javascript.html)

s24344 19.01.2019 11:54

Как правильно сравнить время (native javascript)?
 
Здравствуйте. Подскажите, пожалуйста, как правильно решить следующую задачу:
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="./styles.css">
</head>

<body>
    <div class="app" data-component="app">
        app
    </div>
    <script src="./main.js"></script>
</body>

</html>


class Main {
  constructor(el) {
    this.el = el;

    this.startDate = '';
    this.currentDate = '';

    this.init();
  }

  init() {
    if (this.el) {
      this.el.addEventListener('click', this.onClickPrimaryEl);
    }
  }

  onClickPrimaryEl = () => {
    if (this.startDate === '' || this.startDate   ) { // Если прошло больше 15 минут с текущего момента вызова функции
      this.startDate = new Date();
      console.log('true');
    } else { // Если прошло меньше 15 минут с текущего момента вызова функции
      console.log('false');
    }
  }
}

const main = new Main(document.querySelector('[data-component="app"]'));

Белый шум 19.01.2019 12:13

https://learn.javascript.ru/datetime

Цитата:

даты можно вычитать, результат вычитания объектов Date – их временная разница, в миллисекундах.

s24344 19.01.2019 12:47

Я попробовал следующим образом реализовать данную задачу, но очевидно, что когда минут будет больше 60, такая логика уже работать не будет:
onClickPrimaryEl = () => {
  this.startDate = new Date();

  this.currentDate = new Date();
  this.currentTime = this.startDate.getMinutes();

  if (this.startTime === '' || this.currentTime === this.d) { // Если прошло больше 15 минут с текущего вызова функции
    this.startTime = this.startDate.getMinutes();
    this.d = this.startTime + this.interval;

    console.log('true');
  } else { // Если прошло меньше 15 минут с текущего вызова функции
    console.log('false');
  }

  console.log(this.startTime);
  console.log(this.currentTime);
  console.log(this.d);
}

Nexus 19.01.2019 12:57

s24344, вам выше цитату привели, перечитайте её еще раз, в ней ответ кроется.
Объект Date можно привести к unix time и уже с ним работать.

j0hnik 20.01.2019 18:20

Поддерживаю, сравнивайте примитивы, проблем будет меньше


Часовой пояс GMT +3, время: 00:15.