Использование getTime для вычисления нескольких дат с помощью операторов If Else - PullRequest
0 голосов
/ 02 июля 2018

Я работаю в Adobe Acrobat DC над заполняемой формой PDF и новой для JavaScript. Мне нужно, чтобы это значение составляло 100 долларов США до 21.09.2008 г., затем с 22 сентября по 10 октября 19 долларов было 125 долларов, а затем начиная с 20 октября было 150 долларов.

У меня есть скрипт ниже, который работает для первого оператора if, но он не вычисляет часть скрипта от 20.10.2008. Может кто-нибудь, пожалуйста, помогите мне и скажите, что я делаю не так?

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 голосов
/ 02 июля 2018

Я не знаком с 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 * 1006 есть возможность обрезки.

0 голосов
/ 02 июля 2018

Похоже, ваш оператор 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;
}

Что-то в этом роде.

...