Проблема определенно вызвана значением work.tax_credit_start
string (?). Парсер Datejs вернет значение null
, если синтаксический анализ завершится неудачно.
В вашем примере d1
будет вычтено из null
Даты. Это вернет неожиданное числовое значение. Затем вы передаете это «неожиданное» число в конструктор TimeSpan
, который вернет некоторое неожиданное значение .days
.
Вот рабочий образец вашего оригинала.
Пример
var d1 = Date.parse("2010-01-30");
var d2 = Date.parse("2010-06-30");
var span2 = new TimeSpan(d2 - d1);
span2.days // 150 days
У меня есть пара рекомендаций для вашего оригинального образца:
- Если вы передаете строковое значение в
Date.parse()
И у вас есть контроль над форматом этого значения, лучше всего передать в формате ISO yyyy-MM-dd
.
- Если вы ожидаете объект
Date
, возвращаемый из Date.parse()
, лучше проверить это значение по null
, чтобы убедиться, что у вас действительно есть действительный Date
объект.
Следующий пример демонстрирует проверку значения null
d1
, а затем установку значения по умолчанию, если null
.
* 1 036 ** +1037 * Пример * * тысяча тридцать-девять
var d1 = Date.parse("30-00-2010"); // Not a valid Date
if (!d1) {
d1 = new Date();
}
console.log(d1); // will be 'now'
Приведенный выше пример можно очистить, передав значение по умолчанию прямо при установке переменной.
* ** 1044 тысяча сорок-три * Пример * * тысяча сорок-шести
var d1 = Date.parse("30-00-2010") || new Date();
console.log(d1); // will be 'now'
Надеюсь, это поможет.