Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.01.2019, 11:54
Профессор
Отправить личное сообщение для s24344 Посмотреть профиль Найти все сообщения от s24344
 
Регистрация: 12.08.2015
Сообщений: 206

Как правильно сравнить время (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"]'));

Последний раз редактировалось s24344, 19.01.2019 в 12:09.
Ответить с цитированием
  #2 (permalink)  
Старый 19.01.2019, 12:13
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

https://learn.javascript.ru/datetime

Цитата:
даты можно вычитать, результат вычитания объектов Date – их временная разница, в миллисекундах.
Ответить с цитированием
  #3 (permalink)  
Старый 19.01.2019, 12:47
Профессор
Отправить личное сообщение для s24344 Посмотреть профиль Найти все сообщения от s24344
 
Регистрация: 12.08.2015
Сообщений: 206

Я попробовал следующим образом реализовать данную задачу, но очевидно, что когда минут будет больше 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);
}
Ответить с цитированием
  #4 (permalink)  
Старый 19.01.2019, 12:57
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,794

s24344, вам выше цитату привели, перечитайте её еще раз, в ней ответ кроется.
Объект Date можно привести к unix time и уже с ним работать.
Ответить с цитированием
  #5 (permalink)  
Старый 20.01.2019, 18:20
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как правильно обращаться к свойствам объект внутри самого объекта ? mitiya Общие вопросы Javascript 12 25.04.2015 21:18
Как нарисовать график на javascript? Бобр Общие вопросы Javascript 21 30.03.2014 17:27
Как на JavaScript подгрузить JavaScript? Pug-dog&Elephant Opera, Safari и др. 2 18.09.2011 15:43
Как правильно очистить maxlength в input? Маэстро Events/DOM/Window 10 22.06.2011 18:14
Как передать картинку из javascript в php KIVagant AJAX и COMET 3 12.05.2010 11:54