2016-11-03 4 views
0

Получить разницу между 2 датами в JavaScript

var date1 = new Date("04.11.2016"); 
 
var date2 = new Date("19.11.2016"); 
 
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
 
var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
 
alert(diffDays);

Пытаетесь получить различались между этими датами, но мой формат даты, что "04.11.2016", Result показать NaN

+0

[momentjs] (https://momentjs.com/) – Andreas

+0

Вы пробовали регистрации даты? 'date2' is null – Rajesh

+1

' date2' является недопустимой датой. Вы прошли «DD-MM-YYYY», но это должно быть «ММ-ДД-ГГГГ» (11.19.2016) –

ответ

3

var date1 = new Date("11/04/2016"); 
 
var date2 = new Date("11/19/2016"); 
 
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
 
var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
 
alert(diffDays);

изменить формат даты.

должна быть MM/DD/YYYY

Надеется, что это помогает.

1

Самый простой способ заключается в использовании moment.js библиотека:

var date1 = moment('04.11.2016', 'MM.DD.YYYY'), 
    date2 = moment('19.11.2016', 'MM.DD.YYYY'), 
    diffDays = date2.diff(date1, 'days'); // you can wrap it in Math.abs() 

Уродливый JS путь:

var input1 = '04.11.2016', 
    parts1 = input1.split('.'), 
    date1 = new Date(parts1[2], parts1[1], parts1[0]), 
    input2 = '19.11.2016', 
    parts2 = input2.split('.'), 
    date2 = new Date(parts2[2], parts2[1], parts2[0]), 
    timeDiff = Math.abs(date2.getTime() - date1.getTime()), 
    diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
0

Проверить это решение, которое использует функцию, называемую getDate преобразовать строку даты в формате "04.11.2016" к объекту даты JavaScript.

function getDate(dateStr) { 
 
    var arr = dateStr.split('.'); 
 

 
    return new Date(arr[2], arr[1], arr[0]); 
 
} 
 

 
var start = getDate("04.11.2016"); 
 
var end = getDate("19.11.2016"); 
 
var timeDiff = Math.abs(end.getTime() - start.getTime()); 
 
var diffDays = Math.ceil(timeDiff/(1000 * 60 * 60 * 24)) 
 
console.log('Number of days: ' + diffDays);

Для того, чтобы использовать этот код, чтобы создать переменную пользовательского JavaScript в Диспетчере тегов Google, вы можете изменить код выше или тот, который вы выбираете, чтобы быть внутри функции - reference.

Custom JavaScript Variable in Google Tag Manager

Custom JavaScript Variable in Google Tag Manager

+0

@aboud дает ошибку компиляции - http://screencast.com/t/ym9KHtWBK0 –

+0

@MargubAlam, can вы публикуете фактическое сообщение об ошибке и в какой среде вы выполнили этот код? –

+0

Эта ошибка Ошибка в строке 7, символ 1: Ошибка анализа. ')' Ожидается - http://screencast.com/t/KQLEF0yF8E –

0

Изменение месяц и дата заказа Первый должен быть месяц, то дата ... MM/DD/YYYY

var date1 = new Date("11.04.2016"); 
 
var date2 = new Date("11.19.2016"); 
 
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
 
var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
 
alert(diffDays);

0

дата состоит из года, месяца, дня, часа, минуты, секунды и миллисекунды.

Объекты даты создаются с помощью нового конструктора Date().

Есть 4 способа инициирования даты:

новой Дата() новой Дата (миллисекунды) новой Дата (DateString) новой Дата (год, месяц, день, часы, минуты, секунды, миллисекунды)

, так что вы можете разделить их, а затем использовать его

0

Ваша вторая дата неверна. Parser рассматривает этот формат MM.DD.YYY, и вы поставили вне диапазона.

var date1 = new Date("04.11.2016"); 
 
var date2 = new Date("09.11.2016"); 
 
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
 
var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
 
alert(diffDays);

0

Просто изменить первые две строки, как показано ниже

формата
var date1 = new Date(2016,11,4); 
var date2 = new Date(2016,11,19); 
0

new date("mm dd yyyy") ошиблась

(function() { 
 
var date1 = new Date("11 04 2016"); 
 
var date2 = new Date("11 19 2016"); 
 
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
 
var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
 
console.log(diffDays); 
 
})()

0

JS ожидает дату до MM-DD-YYYY и не DD-MM-YYYY. Идеальный способ будет использовать moment.js, но вы можете использовать что-то вроде этого:

function createCustomDate(dateString){ 
 
    var dateArr = dateString.split(/[^0-9]/).reverse().join("-") 
 
    return new Date(dateArr); 
 
} 
 

 
var dateStr1 = "04.11.2016"; 
 
var dateStr2 = "19.11.2016"; 
 
var date1 = createCustomDate(dateStr1); 
 
var date2 = createCustomDate(dateStr2); 
 
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
 
var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
 
console.log(diffDays);

+0

спасибо, вы помогаете –

+0

, давая ошибку компиляции - http://screencast.com/t/ym9KHtWBK0 –

+0

Можете ли вы поделиться сообщением об ошибке? В идеале он должен работать – Rajesh

0
new Date("19.11.2016"); 

это Недопустимая дата. Таким образом, разница будет NaN.

измените формат на mm/dd/yyyy, и он будет работать.

0

Вы можете использовать moment.js,

d = moment('11.16.2016') // here date format was in "MM.DD.YYYY" 
e = moment('11.04.2016') // here date format was in "MM.DD.YYYY" 
getDiffbydays = e.diff(d,'days') // get diff by days you can use day 
getDiffbyyears = e.diff(d,'year') // get diff by years you can use year 
getDiffbymonth = e.diff(d,'month') // get diff by months you can use month 
Смежные вопросы