PDF表单中Date字段提取星期值失败问题排查请求
PDF表单日期字段提取星期值问题排查与解决
你这段代码失效的核心原因是从Date字段获取的value是字符串类型,不是JavaScript的Date对象,直接调用getDay()会触发类型错误,导致代码中断执行,自然无法写入结果。
问题拆解
getField("Date1").value返回的是PDF表单中显示的日期字符串(比如"2024/05/20"),并非可调用日期方法的Date实例,因此d.getDay()会报错,后续写入逻辑无法执行。
修复方案
先将日期字符串转换为合法的Date对象,再调用日期方法,修改后的代码如下:
// 读取Date字段的字符串值 let dateStr = getField("Date1").value; // 将字符串转为Date对象(需匹配你的日期格式,默认支持YYYY/MM/DD、MM/DD/YYYY等通用格式) let d = new Date(dateStr); // 检查日期转换是否有效,避免无效日期导致的异常 if (!isNaN(d.getTime())) { // getDay()返回0(周日)到6(周六)的数字 let day = d.getDay(); this.getField("Day").value = day; } else { // 处理无效日期的情况,比如清空Day字段 this.getField("Day").value = ""; }
额外注意事项
- 如果你的PDF日期格式是自定义格式(比如
"DD-MM-YYYY"),需要手动拆分字符串构建Date对象,示例:let dateParts = dateStr.split("-"); // JavaScript的Date月份是0开始的,所以要减1 let d = new Date(dateParts[2], dateParts[1]-1, dateParts[0]); - 确认
Day字段的类型为数值型或文本型,且未设置只读权限,确保代码有权限写入值。
内容的提问来源于stack exchange,提问作者Aly
相关产品推荐
相关产品推荐

