Javascript 日期验证不适用于带有三个文本框的PDF(正在运行) 我和Adobe AcROAT席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"); }

Javascript 日期验证不适用于带有三个文本框的PDF(正在运行) 我和Adobe AcROAT席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"); },javascript,date,pdf,Javascript,Date,Pdf,最初,这段代码是有效的——仅当选择的日期不是今天的日期时才会抛出错误。现在,无论选择什么日期,我都会出错 变量日期是格式为m/d/y的字符串,但测试日期是日期对象。=比较将强制将日期转换为字符串,现在比较有效: date != test_date.toString(); 由于需要Date.prototype.toString以RFC 2822格式返回字符串(例如Mon,1995年12月25日13:30:00 GMT),大多数新浏览器现在都在实现该格式。RFC格式与格式为m/d/y的字符串不匹配

最初,这段代码是有效的——仅当选择的日期不是今天的日期时才会抛出错误。现在,无论选择什么日期,我都会出错

变量日期是格式为m/d/y的字符串,但测试日期是日期对象。
=比较将强制将日期转换为字符串,现在比较有效:

date != test_date.toString();
由于需要Date.prototype.toString以RFC 2822格式返回字符串(例如Mon,1995年12月25日13:30:00 GMT),大多数新浏览器现在都在实现该格式。RFC格式与格式为m/d/y的字符串不匹配,因此比较结果将始终为true

例如

在使用这些格式时,对于任何日期都将始终为真。有关答案,请参阅

为了提供帮助,我对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))
一元
+
将日期转换为数字,而setHours的返回值是新的时间值(也是一个数字),因此这两个值都将强制为数字。如果您想要更明确的内容,请考虑:

if (new Date(year, month - 1, day).getTime() != new Date().setHours(0,0,0,0))
var d=新日期();
var day=d.getDate();
变量月份=d.getMonth()+1;
var year=d.getFullYear();
//是今天!=今天
console.log(+新日期(年,月-1,天)!=新日期().setHours(0,0,0,0));
//是今天!=明天

log(新日期(年,月-1,天+1).getTime()!=newdate().setHours(0,0,0,0))我已更改日期!=测试_日期到日期!=test_date.toString()但这似乎并不能解决问题。还有其他建议吗?@AshtonBinkley我的答案的第一部分解释了原因,其余部分解释了你可以尝试什么(在“…你可以做…”之后的部分:-)
if (new Date(year, month - 1, day).getTime() != new Date().setHours(0,0,0,0))