Неправильно считает дни

Статус
Закрыто для дальнейших ответов.

StanislavL

Участник
Топикстартер
Сообщения
9
Реакции
0
Добрый вечер,
Мой первый топик, прошу не ругать. Начинающий пользователь Acrobat XI pro
Столкнулся с проблемой подсчетов дней. Кто то может сказать в чем причина?
Подсчет ведется script. Пятая линия с 28.03.2014 по 31.03.2014, должно быть 3 дня, а пишет 2.
Заранее спасибо.
 

Вложения

  • Storage-beta.pdf
    177.8 КБ · Просм.: 448

zeiv

Участник
Сообщения
91
Реакции
29
Ничего не менял, считает правильно!
 

Вложения

  • Storage-beta-1.pdf
    163.2 КБ · Просм.: 448

StanislavL

Участник
Топикстартер
Сообщения
9
Реакции
0
Похоже bug в программе, хотя такие ошибки могут дорого стоит. Скачал вашу версию показывает правильно, если не менять эти даты еше раз. Может не правильно script написан?



var strStart = this.getField("DateStart4").value;
var strEnd = this.getField("DateEnd4").value;
if(strStart.length && strEnd.length)
{
var dateStart = util.scand("dd.mm.yyyy",strStart);
var dateEnd = util.scand("dd.mm.yyyy",strEnd);
var diff = dateEnd.getTime() - dateStart.getTime();
var oneDay = 24 * 60 * 60 * 1000;
var days = Math.floor(diff/oneDay);
event.value = days;
}
else
event.value = 0;
 

zeiv

Участник
Сообщения
91
Реакции
29
Я менял даты, всё работает.
 

Вложения

  • Storage-beta-1.pdf
    175.3 КБ · Просм.: 386

zeiv

Участник
Сообщения
91
Реакции
29
Единственно что бя я сделал, так это немного поправил бы столбцы и строки (они пляшут) и оформил бы в виде таблицы (для удобства восприятия), но это моё личное мнение.
Как то так. Не все строки выделил, лень.
 

Вложения

  • Storage-beta-3.pdf
    212.4 КБ · Просм.: 419

zeiv

Участник
Сообщения
91
Реакции
29
Похоже bug в программе, хотя такие ошибки могут дорого стоит. Скачал вашу версию показывает правильно, если не менять эти даты еше раз. Может не правильно script написан?



var strStart = this.getField("DateStart4").value;
var strEnd = this.getField("DateEnd4").value;
if(strStart.length && strEnd.length)
{
var dateStart = util.scand("dd.mm.yyyy",strStart);
var dateEnd = util.scand("dd.mm.yyyy",strEnd);
var diff = dateEnd.getTime() - dateStart.getTime();
var oneDay = 24 * 60 * 60 * 1000;
var days = Math.floor(diff/oneDay);
event.value = days;
}
else
event.value = 0;
Это скрипт для 4-й строки
 

StanislavL

Участник
Топикстартер
Сообщения
9
Реакции
0
У меня в скрипте 5 стоит, не стой строки копировал, извиняюсь.
 

StanislavL

Участник
Топикстартер
Сообщения
9
Реакции
0
В 8 строке тоже самое, не считает с 31.03
 

zeiv

Участник
Сообщения
91
Реакции
29
Скрипт не учитывает, что в месяцах 31 и 28-29 дней и высокосные года тоже.
 

imma

15 лет на форуме
Сообщения
3 089
Реакции
2 185
Скрипт не учитывает, что в месяцах 31 и 28-29 дней и высокосные года тоже.
Это учитывает не скрипт, а сам Акробат. Например 30 февраля вбить не получится. Но именно сочетание 31.03 дает сбой. Скорее всего -- баг.
 
  • Спасибо
Реакции: StanislavL

zeiv

Участник
Сообщения
91
Реакции
29
Это учитывает не скрипт, а сам Акробат. Например 30 февраля вбить не получится. Но именно сочетание 31.03 дает сбой. Скорее всего -- баг.
Вполне возможно, что баг.
По поводу Акробата тоже согласен.
 
  • Спасибо
Реакции: StanislavL

StanislavL

Участник
Топикстартер
Сообщения
9
Реакции
0
Если у вас есть LiveCycle вы не могли бы проверить если такая ошибка присутствует там?
 

cloud_in_the_sky

Участник
Сообщения
42
Реакции
37
Возможно, локаль у пациента такая, что с 0-00 28 марта по 0-00 31 марта прошел 71 час локального времени (по причине перевода часов на лето (DST)). С временем вообще надо быть очень аккуратно (я бы интервалы считал по UTC), как и с деньгами. + В скрипте зачем-то Math.floor, вот и 2 вместо 3.
 
  • Спасибо
Реакции: StanislavL

StanislavL

Участник
Топикстартер
Сообщения
9
Реакции
0
Подскажите пожалуйста как исправить? Я совсем чайник еше
 

StanislavL

Участник
Топикстартер
Сообщения
9
Реакции
0
Попробовал сделать в LiveCycle и опять маленькая проблема, не считает сумму окончательную, можете подсказать где ошибка?
 

Вложения

  • ss.pdf
    82.3 КБ · Просм.: 566

StanislavL

Участник
Топикстартер
Сообщения
9
Реакции
0
Нашел, javascript стоял при подсчете стоял. :)
 
Статус
Закрыто для дальнейших ответов.