使用 getTime 通过 If Else 语句计算多个日期

Using getTime to calculate multiple Dates with If Else statements

我正在 Adob​​e 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 中可用