使用 getTime 通过 If Else 语句计算多个日期
Using getTime to calculate multiple Dates with If Else statements
我正在 Adobe Acrobat DC 中处理可填写的 PDF 表单,并且是 JavaScript 的新手。我需要在 2018 年 9 月 21 日之前将价值设为 100 美元,然后从 9/22 到 10/19 为 125 美元,然后从 10/20 开始为 150 美元。
我有下面的脚本,它适用于第一个 if
语句,但它不计算脚本的 10/20/2018 部分。有人可以帮助我并告诉我我做错了什么吗?
var sub = 100 * Number(this.getField("numEthernet").value);
var s = this.getField("Date").valueAsString;
if (s!="") {
var d = util.scand("mm/dd/yyyy", s);
var cutOffDate = util.scand("mm/dd/yyyy", "9/21/2018");
if (d.getTime()>cutOffDate.getTime()){
sub *= 1.25;
}
}
else if (s!="") {
var d = util.scand("mm/dd/yyyy", s);
var cutOffDate = util.scand("mm/dd/yyyy", "10/20/2018");
if (d.getTime()>=cutOffDate.getTime()){
sub *= 1.50;
}
}
event.value = sub;
看起来您的 if 语句正在检查 s 是否不是空字符串。你的 else if 语句正在寻找同样的东西,但由于你的初始 if 语句已经成功,它不会寻找 else if.
在不知道确切语法的情况下,尝试查找 2 项:
if(s!="" && /* Check if the current date is within your first time period */) {
sub *= 1.25;
}
else if(s!="" && /* Check if the current date is within your second time period */) {
sub *= 1.50;
}
类似的东西。
我不熟悉 Acrobat DC,所以我不太确定 javascript 的一些基本 methods/objects 的可用性,但这应该有效,因为我试图去除任何我的回答中不必要的代码:
var sub = 100 * Number(this.getField("numEthernet").value);
var s = this.getField("Date").valueAsString;
if (s != "") {
var dateFormat = "mm/dd/yyyy";
var suppliedDate = util.scand(dateFormat, s).getTime();
if (suppliedDate >= util.scand(dateFormat, "9/22/2018").getTime() && suppliedDate <= util.scand(dateFormat, "10/19/2018").getTime()){
sub *= 1.25;
}
else if (suppliedDate >= util.scand(dateFormat, "10/20/2018").getTime()) {
sub *= 1.50;
}
}
event.value = sub;
以后我会建议将 var s = this.getField("Date").valueAsString
换成 var s = this.getField("Date").valueAsString.trim()
这样的空格不会造成任何问题,但我不确定 trim 在 Acrobat DC 中可用
我正在 Adobe Acrobat DC 中处理可填写的 PDF 表单,并且是 JavaScript 的新手。我需要在 2018 年 9 月 21 日之前将价值设为 100 美元,然后从 9/22 到 10/19 为 125 美元,然后从 10/20 开始为 150 美元。
我有下面的脚本,它适用于第一个 if
语句,但它不计算脚本的 10/20/2018 部分。有人可以帮助我并告诉我我做错了什么吗?
var sub = 100 * Number(this.getField("numEthernet").value);
var s = this.getField("Date").valueAsString;
if (s!="") {
var d = util.scand("mm/dd/yyyy", s);
var cutOffDate = util.scand("mm/dd/yyyy", "9/21/2018");
if (d.getTime()>cutOffDate.getTime()){
sub *= 1.25;
}
}
else if (s!="") {
var d = util.scand("mm/dd/yyyy", s);
var cutOffDate = util.scand("mm/dd/yyyy", "10/20/2018");
if (d.getTime()>=cutOffDate.getTime()){
sub *= 1.50;
}
}
event.value = sub;
看起来您的 if 语句正在检查 s 是否不是空字符串。你的 else if 语句正在寻找同样的东西,但由于你的初始 if 语句已经成功,它不会寻找 else if.
在不知道确切语法的情况下,尝试查找 2 项:
if(s!="" && /* Check if the current date is within your first time period */) {
sub *= 1.25;
}
else if(s!="" && /* Check if the current date is within your second time period */) {
sub *= 1.50;
}
类似的东西。
我不熟悉 Acrobat DC,所以我不太确定 javascript 的一些基本 methods/objects 的可用性,但这应该有效,因为我试图去除任何我的回答中不必要的代码:
var sub = 100 * Number(this.getField("numEthernet").value);
var s = this.getField("Date").valueAsString;
if (s != "") {
var dateFormat = "mm/dd/yyyy";
var suppliedDate = util.scand(dateFormat, s).getTime();
if (suppliedDate >= util.scand(dateFormat, "9/22/2018").getTime() && suppliedDate <= util.scand(dateFormat, "10/19/2018").getTime()){
sub *= 1.25;
}
else if (suppliedDate >= util.scand(dateFormat, "10/20/2018").getTime()) {
sub *= 1.50;
}
}
event.value = sub;
以后我会建议将 var s = this.getField("Date").valueAsString
换成 var s = this.getField("Date").valueAsString.trim()
这样的空格不会造成任何问题,但我不确定 trim 在 Acrobat DC 中可用