使用getTime与If Else语句一起计算多个日期

时间:2018-07-02 18:25:36

标签: javascript if-statement pdf adobe gettime

我正在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;

2 个答案:

答案 0 :(得分:2)

我对Acrobat DC不太熟悉,因此我不太确定某些javascript基本方法/对象的可用性,但是这应该可行,因为我试图从答案中剥离任何不必要的代码:

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()的东西,以使空格不会引起任何问题,但是我不确定Acrobat DC中是否有修剪功能

答案 1 :(得分:0)

看起来您的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;
}

类似的事情。