Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   moment прибавить несколько часов к текущему времени (https://javascript.ru/forum/jquery/70215-moment-pribavit-neskolko-chasov-k-tekushhemu-vremeni.html)

DDim1000 20.08.2017 18:55

moment прибавить несколько часов к текущему времени
 
Здравствуйте!
Подскажите пожалуйста, как, с помощью moment прибавить к текущему времени несколько часов?

Вот так пробую...:

moment.locale('ru');
	       var DateTime = moment().format('DD-MM-YYYY, HH:mm:ss');				
               var CorrDate = DateTime.add(2,'hours');


Но, вот такая ошибка выходит: Uncaught TypeError: DateTime.add is not a function

рони 20.08.2017 19:19

DDim1000,
var CorrDate = moment().add(2,'hours').format('DD-MM-YYYY, HH:mm:ss');

DDim1000 21.08.2017 08:54

РОНИ,
Спасибо!

DDim1000 21.08.2017 10:04

Подскажите еще пожалуйста, почему JS говорить что from() - это не функция?
script.js:377 Uncaught TypeError: UnlockRemindPass.from is not a function

moment.locale('ru');
			    var DateTime = moment().format('DD-MM-YYYY, HH:mm:ss');				
               	var UnlockRemindPass = moment().add(2,'hours').format('HH:mm:ss'); 
			    var UnlockTimeOf = UnlockRemindPass.from(DateTime);

рони 21.08.2017 10:54

DDim1000,
DateTime и UnlockRemindPass это обычные строки после format и никаких функций кроме строковых, у них нет

DDim1000 21.08.2017 14:34

Цитата:

Сообщение от рони (Сообщение 462190)
DDim1000,
DateTime и UnlockRemindPass это обычные строки после format и никаких функций кроме строковых, у них нет

А как тогда узнать и вывести разницу во времени?

рони 21.08.2017 15:00

Цитата:

Сообщение от DDim1000
А как тогда узнать и вывести разницу во времени?

а зачем если разница известна (2 часа)?
но если хочется, уберите форматирование
DDim1000,
var DateTime = moment();
  	var UnlockRemindPass = moment().add(2,'hours');
    var UnlockTimeOf = UnlockRemindPass.from(DateTime) ;
   alert(UnlockTimeOf)

DDim1000 21.08.2017 15:32

Цитата:

Сообщение от рони (Сообщение 462215)
а зачем если разница известна (2 часа)?
но если хочется, уберите форматирование
DDim1000,
var DateTime = moment();
  	var UnlockRemindPass = moment().add(2,'hours');
    var UnlockTimeOf = UnlockRemindPass.from(DateTime) ;
   alert(UnlockTimeOf)

Разницу нужна для информирования пользователя, например, сколько осталось времени до снятия блокировки какого-то его действия.

DDim1000 22.08.2017 12:48

Цитата:

Сообщение от рони (Сообщение 462215)
а зачем если разница известна (2 часа)?
но если хочется, уберите форматирование
DDim1000,
var DateTime = moment();
  	var UnlockRemindPass = moment().add(2,'hours');
    var UnlockTimeOf = UnlockRemindPass.from(DateTime) ;
   alert(UnlockTimeOf)

Извините, я не правильно сформулировал вопрос... Не разницу нужно узнать, а сколько осталось до определенного времени. Если мы прибавим, допустим, к текущему времени 2 часа, то как узнать, сколько осталось времени с текущего момента до полученного времени? Проще сказать, как сделать отсчет времени?

рони 22.08.2017 16:08

таймер на moment.js
 
DDim1000,
возможно в документации есть метод проще

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/locale/ru.js"></script>


</head>

<body>
<p></p>
<script>
moment.locale('ru');
var UnlockRemindPass = moment().add(2,'hours').valueOf();
function fn()
{
var DateTime = moment().valueOf();
var d  = UnlockRemindPass - DateTime;
document.querySelector("p").innerHTML = moment(d).utc().format('HH:mm:ss'); ;
d > 0 && window.setTimeout(fn, 300)
}

fn()

  </script>
</body>
</html>

DDim1000 03.09.2017 16:29

Цитата:

Сообщение от рони (Сообщение 462365)
DDim1000,
возможно в документации есть метод проще

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/locale/ru.js"></script>


</head>

<body>
<p></p>
<script>
moment.locale('ru');
var UnlockRemindPass = moment().add(2,'hours').valueOf();
function fn()
{
var DateTime = moment().valueOf();
var d  = UnlockRemindPass - DateTime;
document.querySelector("p").innerHTML = moment(d).utc().format('HH:mm:ss'); ;
d > 0 && window.setTimeout(fn, 300)
}

fn()

  </script>
</body>
</html>

Подскажите пожалуйста, почему разница более чем 12 часов не воспринимать?
Говорит что, с 2017-09-03 18:59:36 и до 2017-09-04 17:59:36, остался один час:haha: . Как так, почему один час?

рони 03.09.2017 17:37

moment timer moment-duration-format
 
DDim1000,
https://github.com/jsmreese/moment-duration-format

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/locale/ru.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>


</head>

<body>
<p></p>
<script>
moment.locale('ru');
var UnlockRemindPass = moment().add(28,'hours');
function fn()
{
var DateTime = moment();
var d  = UnlockRemindPass - DateTime;
document.querySelector("p").innerHTML = moment.duration(UnlockRemindPass.diff(DateTime)).format("dd[ дн.] hh[ ч.] mm[ мин.] ss[ сек.]");
d > 0 && window.setTimeout(fn, 300)
}

fn()

  </script>
</body>
</html>


<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/locale/ru.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>

</head>

<body>
<p></p>
<script>
moment.locale('ru');

function fn()
{
var m1 = moment('2017-09-03 18:59:36','YYYY-MM-DD HH:mm:ss');
var m2 = moment('2017-09-04 17:59:36','YYYY-MM-DD HH:mm:ss');
var diff = moment.duration(m2.diff(m1)).format("d[ дн.] h:mm:ss"); //
document.querySelector("p").innerHTML = diff
}

fn()

  </script>
</body>
</html>


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