Установка времени в Jquery с часами и минутами, значения, считываемые из переменных

#javascript #jquery #date

#javascript #jquery #Дата

Вопрос:

Я пишу приложение-напоминание, и мне нужно установить даты с годами, месяцами, днями, часами и минутами! Все это должно поступать из разных полей ввода и преобразовываться в единую дату. Все работает нормально, пока я использую только годы, месяцы и дни, но как только я пытаюсь добавить часы и минуты, я получаю ошибку «недопустимая дата» в консоли.

 HMTL

      Esemény ideje (év): <input type="text" id="year">
        <br>
        Esemény ideje (hónap): <input type="text" id="month">
        <br>
        Esemény ideje (nap): <input type="text" id="day">
        <br>
        Esemény ideje (óra): <input type="text" id="hour">
        <br>
        Esemény ideje (perc): <input type="text" id="minute">

JQ

  let year=$("#year").val();
  let month=$("#month").val();
  let day=$("#day").val();
  let hours=$("#hour").val();
  let minutes=$("#minute").val();
  let time = new Date(year "," month "," day "," hours "," minutes)
  console.log(time);
  

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

1. Вы должны попытаться сконструировать строку в формате ISO, а не с запятыми.

2. Не могли бы вы, пожалуйста, немного уточнить это?

3. Если вы передаете в качестве аргументов вместо форматированной строки, устраняет ли это проблему? пусть time = новая дата (год, месяц, день, часы, минуты);

4. @daddygames Вау, это действительно так. Спасибо!

5. @makadi_88 строка в формате ISO будет выглядеть примерно так: new Date('2019-03-10T03:00:00.000Z')

Ответ №1:

У вас уже есть все компоненты даты; нет необходимости объединять их в строку (которую хрупкий алгоритм анализа даты все равно не смог бы использовать). Используйте Date конструктор с 2 аргументами:

 new Date( year,  month - 1,  day,  hours,  minutes);
  

S преобразует строковые значения ваших переменных в числа, и month - 1 это необходимо, потому что значения месяцев JavaScript проиндексированы на 0: январь равен 0, декабрь равен 11.

Ответ №2:

Попробуйте этот формат

 let time = new Date(month "/" day "/" year "/" " " hours ":" minutes ":00")
  

Ответ №3:

Я думаю, вы упускаете секундную часть. Попробуйте следующее и убедитесь, что ваши входные данные имеют тип Number

 let time = new Date(year "," month "," day "," hours "," minutes "00")
console.log(time);