使用getTime使用if Else语句计算多个日期

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (85)

我正在AdobeAcrobatDC中使用一个可填充的PDF表单,并且是JavaScript的新手。我需要100美元直到2018年9月21日,然后从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;
提问于
用户回答回答于

我对AcrobatDC不太熟悉,所以我不太确定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;

将来我建议交换s != ""带着某种与…有关的东西s.trim() != ""所以空格不会引起任何问题,但我不确定AcrobatDC中是否有TRIM

用户回答回答于

看起来你的if语句正在检查s是否不是空字符串。你的Elseif语句正在查找相同的内容,但由于你的初始if语句已经成功,因此它将不会查找“其他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;
}

扫码关注云+社区

领取腾讯云代金券