Сравните два поля даты с помощью SSJS

У меня есть два поля даты в документе. Мне нужно проверить, содержат ли эти два поля одно и то же значение, используя SSJS.

Значения в этих полях могут быть датой и временем или «не установлены» (пусто).

Как мне это сделать?

Томас


person Thomas Adrian    schedule 23.10.2018    source источник


Ответы (1)


Самый простой способ - сравнить строковые значения дат:

var d1 = document1.getItemValue("date1").toString();
var d2 = document1.getItemValue("date2").toString();
return d1 == d2

Если вы хотите сравнить только даты, вы можете сделать это, преобразовав дату с помощью класса Java SimpleDateFormat.

var sdf = new java.text.SimpleDateFormat("YYYY-MM-dd");
var d1 = document1.getItemValueDate("date1");
var d2 = document1.getItemValueDate("date2");
d1 = d1 == null?"":sdf.format(d1);
d2 = d2 == null?"":sdf.format(d2);
return d1.equals(d2)

Вы можете настроить форматирование в первой строке в соответствии с вашими потребностями. Дополнительную информацию о форматировании можно найти здесь

person Tom Van Aken    schedule 23.10.2018
comment
странно, я не мог заставить это работать. не знаю почему. Мое поле даты иногда содержит только дату, но .toString(), кажется, возвращает дату + время (сейчас) для обоих полей, включая квадратные скобки, поскольку это вектор. хотя оба поля содержат одно и то же значение, оно сообщает, что оно отличается. будет исследовать больше - person Thomas Adrian; 23.10.2018
comment
Спасибо. Я решил это по-другому, но вы дали мне несколько идей. На самом деле я никогда раньше не использовал getItemValueDate, который является свойством Xspdoc. - person Thomas Adrian; 24.10.2018