javascript - 日期验证不适用于带有三个文本框的 PDF (WAS WORKING)
问题描述
我正在使用 Adobe Acrobat XI Pro。我使用三个文本框作为日期,代码如下:
var month = this.getField("DATE_MONTH").valueAsString;
var day = this.getField("DATE_DAY").valueAsString;
var year = this.getField("DATE_YEAR").valueAsString;
var date = month + "/" + day + "/" + year;
var test_date = new Date();
test_date.setDate(test_date.getDate());
if(date != test_date){
app.alert("The entered value needs to be TODAY'S date in the format mm/dd/yyyy");
}
Originally, this code was working-- only throwing an error if the date chosen was not today's date. 现在,无论选择什么日期,我都会收到错误消息。
解决方案
变量date是 m/d/y 格式的字符串,但test_date是 Date 对象。比较将!=
强制将日期转换为字符串,现在比较有效:
date != test_date.toString();
由于下一版本的 ECMA-262要求Date.prototype.toString以 RFC 2822 格式返回一个字符串(例如 Mon, 25 Dec 1995 13:30:00 GMT),大多数新浏览器现在都在实现该格式。RFC 格式与 m/d/y 格式的字符串不匹配,因此比较将始终为真,
例如
'12/25/1995' != 'Mon, 25 Dec 1995 13:30:00 GMT'
使用这些格式时,任何日期都将始终如此。如需答案,请参阅使用 JavaScript 比较两个日期。
只是为了帮忙,我对 PDF 中的 ECMAScript 一无所知,但您可以这样做:
var month = this.getField("DATE_MONTH").valueAsString;
var day = this.getField("DATE_DAY").valueAsString;
var year = this.getField("DATE_YEAR").valueAsString;
// Compare date time values with time set to 00:00:00
if (+new Date(year, month - 1, day) != new Date().setHours(0,0,0,0))
一元+
将 Date 转换为数字,setHours的返回值是新的时间值(也是数字),因此两个值都将被强制转换为数字。如果您想要更明确的内容,请考虑:
if (new Date(year, month - 1, day).getTime() != new Date().setHours(0,0,0,0))
var d = new Date();
var day = d.getDate();
var month = d.getMonth() + 1;
var year = d.getFullYear();
// Is today != today?
console.log( +new Date(year, month - 1, day) != new Date().setHours(0,0,0,0));
// Is today != tomorrow?
console.log( new Date(year, month - 1, day + 1).getTime() != new Date().setHours(0,0,0,0));
附言
这:test_date.setDate(test_date.getDate())
没有任何用处。它只是将test_date的日期设置为它已经拥有的相同值。;-)
推荐阅读
- windows - Internet Explorer 的白名单,不影响其他浏览器
- java - 从一个单独的数组中创建一个随机元素数组,最长为给定的长度
- java - 我们可以在 java 的 forEach 循环中使用 break 语句吗?
- reactjs - react-hook-form 表单中的表单
- python - 查找第一个值并返回列表中的第二个值
- python - 打印 python ceasar cypher 时的间距问题
- queue - ServiceBusTrigger 在连续网络作业上使用 ReceiveDelete
- java - 将 kotlin 项目从 pom.xml 转换为 build.gradle
- python - 如何对数据进行分类以获得树状结构
- python - 在我写的一篇文章上运行 QA,我不知道为什么最后一个 if 语句不会返回任何东西