Moment.js Добавить время для ввода строки

#javascript #momentjs

#javascript #momentjs

Вопрос:

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

https://momentjs.com/docs/#/manipulating/add / — Посмотрел здесь, и из того, что у меня есть ниже, я ожидал бы, что это сработает, но журнал консоли показывает null. Кто-нибудь может определить, где я ошибаюсь? Спасибо

 var input = "2020-08-06 15:15:00"

var manDate = moment(input, "YYYY MM DD hh mm ss")
var b = manDate.add(5, 'hours'); 
console.log(b)
  

***редактировать
Ожидаемый результат должен быть 2020-08-06 20:15:00

Ответ №1:

Вам нужно правильно отформатировать его на moment(input,format)

 var input = "2020-08-06 15:15:00"

var manDate = moment(input, "YYYY-MM-DD HH:mm:ss")

var b = manDate.add(5, 'hour'); 
console.log(b.format('YYYY-MM-DD HH:mm:ss'))  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>  

Ответ №2:

Ваш формат ввода не соответствует вашей входной строке. В противном случае manDate является недопустимой датой при создании.

var input = "2020-08-06 15:15:00"

Ваш формат ввода должен соответствовать этому, поэтому было бы:

var manDate = moment(input, "YYYY-MM-DD HH:mm:ss")

Комментарии:

1. hh означает формат 12 утра / вечера, поэтому в данном случае это не сработало бы.

2. @Carlos1232 отредактирован для соответствия, но использование hh, похоже, не повлияло на это, когда я запускал его в своем браузере. Добавленные значения по-прежнему были правильными и отображались так, как если бы это был 24-часовой формат.

3. Вы правы, это была моя ошибка, но вы не узнаете, сколько сейчас правильного времени, если не отформатируете его в «ГГГГ-ММ-ДД чч: мм: сс а»

Ответ №3:

Вторым аргументом функции moment является формат. Оно должно соответствовать строковым символам даты и любым другим используемым (например: «/», «-«, «:»). Вы должны использовать YYYY-MM-DD hh:mm:ss ИЛИ оставить его пустым, поскольку этот формат используется по умолчанию. Для вывода переменной moment в строку используйте метод format с желаемым форматом вывода в качестве первого аргумента.

 var input = "2020-08-06 15:15:00"
var manDate = moment(input);
var b = manDate.add(5, 'hours');
console.log(b.format('YYYY-MM-DD hh:mm:ss'));