В нашем приложении ServiceNow есть требование вычислять количество лет, месяцев и дней между двумя датами.Наше бизнес-правило, приведенное ниже, работает нормально, но не на 100% идеально:
(function executeRule(current, previous /*null when async*/) {
var t = new GlideDateTime(current.from.getDisplayValue());
var f = new GlideDateTime(current.to.getDisplayValue());
var duration = GlideDateTime.subtract(t, f).getDayPart();
var durationYears = Math.floor(duration/365);
var durationMonths = Math.floor((duration % 365)/30);
var durationDays = Math.floor((duration % 365)%30);
current.setValue('year', durationYears);
current.setValue('month', durationMonths);
current.setValue('day', durationDays);
})(current, previous);
Это прекрасно работает, если предположить, что в каждом месяце 30 дней.Тем не менее, продолжительность месяца может составлять от 29 до 31 дня (включая високосные годы).Любые предложения по приведенному выше коду могут быть более точными без использования библиотек, таких как moment.js?
Спасибо!