#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);