#javascript #acrobat
#javascript #acrobat
Вопрос:
Все, у меня есть форма с тремя отдельными текстовыми полями. Год, месяц и день. Я пытаюсь понять, как объединить их и создать дату (формат даты не имеет значения), а затем вычесть ее из другой даты, чтобы найти количество дней между ними.
Проблема в том…Я новичок в JavaScript и не могу найти в Интернете ничего, что можно было бы использовать в качестве учебного пособия.
Если бы кто-нибудь мог помочь мне начать, я был бы очень признателен.
Мои текстовые поля буквально («Год», «Месяц» и «День»). Я предполагаю, что есть способ объединить три числа, а затем преобразовать в дату? Ниже я нахожусь, и я знаю, что это далеко, так что…
var cYar = this.getField("Year").value
var cMon = this.getField("Month").value
var cDay = this.getField("Day").value
var cSrt = concat(cYar,'-',cMon,'-',cDay)as date
var cYar2 = this.getField("lveyear").value
var cMon2 = this.getField("lvemon").value
var cDay2 = this.getField("lveday").value
var cEnd = concat(cYar2,'-',cMon2,'-',cDay2)as date
this.getField("numdays")event.value = (cEnd-Csrt) 1
Заранее спасибо…
Ответ №1:
Date
Конструктор поддерживает все ваши данные. Обратитесь к MDN
new Date(year, monthIndex[, day[, hours[, minutes[, seconds [, milliseconds]]]]])
-
Объекты даты поддерживают математические операции, которые работают с использованием метки времени эпохи.
-
Обратите внимание, что monthIndex начинается с
January = 0
const convertToDate = (yyyy, mm, dd) => new Date(yyyy, mm - 1, dd);
convertToDate(2020, 09, 19) - convertToDate(2020, 09, 18)
Вывод: 86400000
(24 часа в миллисекундах)
Если вы пытаетесь получить количество дней:
const dateA = convertToDate(cYar, cMon, cDay);
const dateB = convertToDate(cYar2, cMon2, cDay2);
const numDays = parseInt((dateB - dateA) / 86400000);
Вот скрипка: https://jsfiddle.net/d2v8hpc1 /
Комментарии:
1. OK…so Я вижу оператор const, но как мне объединить три поля, чтобы создать дату, которую он будет использовать в качестве новой даты? Могу ли я просто использовать concat для выполнения этого внутри Date()? Нужно ли мне устанавливать переменные в виде строк, а не просто значение поля?
2. нет, этот подход не касается манипулирования строками.
3. Хорошо … я думаю, мне нужна еще немного помощи. Извините, что так медленно, но я парень старой школы VB. Этот JavaScript сводит меня с ума! лол
4. Используя предоставленный вами код, я предполагаю, что я объявляю свои переменные и добавляю в ваш текст. Поместите это в действие «При размытии» в записи «Последний день», и после выхода из этого поля оно должно вычислить и заполнить поле «количество дней». Должен ли я на самом деле создавать даты и помещать их в текстовое поле или я могу просто использовать их в коде самостоятельно для выполнения математики? Как я могу использовать даты, если не присваивать их (dateA и dateB) переменным? И если я назначу, как мне это сделать? Можете ли вы объявить переменную без = «something»?
5. Я нашел учебник по работе с датами в Acrobat: я здесь сейчас … все еще не работает. var cYar = this.getField(«Год»).значение; var cMon = this.getField(«Месяц»).значение; var cDay = this.getField(«День»).значение; var cYar2 = this.getField(«lveyear»).значение; var cMon2 = this.getField(«lvemon»).value; var cDay2 = this.getField(«lveday»).value; var dateA = новая дата (cYar, cMon, cDay); var dateB = новая дата (cYar2, cMon2, cDay2); var diff = dateB.getTime() — dateA.getTime(); var OneDay = 24 * 60 * 60 * 1000 ; var cNumdays = diff/OneDay; this.getField(«numDays»).value = cNumdays
Ответ №2:
Вы можете искать описание Date
объекта, который является частью ядра JavaScript.
Вы также должны посмотреть в документации Acrobat JavaScript на методы util.scand()
и util.printd()
.