javascript - 根据PDF表单中的独立表单域计算日期
问题描述
我想计算一个恰好在 PDF 表单的单独日期字段中选择的日期前 5 天的日期。例如,如果我在 中选择“2021 年 7 月 10 日” Date1
,我想Date2
自动填充“2021 年 7 月 5 日”。
我知道如何从字段 1 中获取日期并用它填充字段 2,并且我知道如何进行 5 天(前)的计算。我真正苦苦挣扎的部分是将这两件事放在文档中。如果我想从当前日期开始计算 5 天前,我可以做到这一点,因为它在整个地球和互联网上都有记录,哈哈。但是从另一个字段中的选定日期计算 5 天前让我陷入了循环。
我不太精通 JavaScript,但我也想知道这是否是一个解决方案:
//turning this piece of code
event.value=this.getField("Date1").value;
//into this piece of code
var d = this.getField("Date1").value;
由于我不需要第二个日期字段来实际填充第一个日期字段值,我想知道它是否像将第一个字段值转换为变量然后将变量放入“自定义计算”下的计算脚本中一样简单脚本”在表单域的属性中。
解决方案
虽然我无法帮助您设置/获取 PDF 表单项,但这里是如何使用您的日期字符串格式“MMM DD,YYYY”在 JavaScript 中从日期中添加或减去天数:
const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
];
// convert "MMM, DD, YYYY" string to Date object
function makeDateFromStr(str) {
const strNoComma = str.split(',').join('');
const [monthStr, day, year] = strNoComma.split(' ');
const monthIndex = months.indexOf(monthStr);
return new Date(year, monthIndex, day);
}
// add/subtract number of days to Date object,
// returning new date
function addDaysToDate(date, addDays) {
const currDays = date.getDate();
const newDate = new Date(date.getTime());
newDate.setDate(currDays + addDays);
return newDate;
}
// convert Date object to string "MMM DD, YYYY"
function myDateFormat(date) {
const monthStr = months[date.getMonth()];
const day = date.getDate();
const year = date.getFullYear();
return `${monthStr} ${day}, ${year}`;
}
const date1Str = "Jul 10, 2011";
console.log(`date1Str: "${date1Str}"`);
const date1 = makeDateFromStr(date1Str);
console.log('date1:',date1.toISOString());
const date2 = addDaysToDate(date1, -5);
console.log('date2:',date2.toISOString());
const date2Str = myDateFormat(date2);
console.log(`date2Str: "${date2Str}"`);
推荐阅读
- flutter - 清洁架构中的共享实体
- python - 按天计算事件?
- node.js - 节点邮件程序:sendGrid DMARC
- jquery - 无法获取代码以在 jQuery 中执行计算
- android - RecyclerView 切换到fragment后什么都不显示
- javascript - 使用 sequelize 在 2 个现有表之间创建关联
- ajax - Symfony 5 / 请求响应:使用 Ajax 获取数据
- python - 使用循环从文件中读取和提取有用数据无法生成值列表
- java - 是否有可能检查我进入的对象是否存在但指向 Null?
- ios - swift-lint:出现不在 .swiftlint.yml 文件中的错误