Как найти различие между двумя датами?
Используя объект Date и его значение в миллисекундах, можно вычислить разницу:
var a = new Date(); // Current date now.
var b = new Date(2010, 0, 1, 0, 0, 0, 0); // Start of 2010.
var d = (b-a); // Difference in milliseconds.
Можно получить количество секунд (как целое число/количество), разделив миллисекунды на 1000, чтобы преобразовать их в секунды, а затем преобразовать результат в целое число (при этом удаляется дробная часть, представляющая собой миллисекунды):
var seconds = parseInt((b-a)/1000);
Затем можно получить целые минуты
, разделив секунды
на 60 и преобразовав их в целое число, затем часы
, разделив минуты
на 60 и преобразовав их в целое число, а затем аналогичным образом - в более длинные единицы времени. Из этого можно создать функцию, позволяющую получить максимальное целое количество единиц времени в значении младшей единицы и оставшуюся младшую единицу времени:
function get_whole_values(base_value, time_fractions) {
time_data = [base_value];
for (i = 0; i < time_fractions.length; i++) {
time_data.push(parseInt(time_data[i]/time_fractions[i]));
time_data[i] = time_data[i] % time_fractions[i];
}; return time_data;
};
// Input parameters below: base value of 72000 milliseconds, time fractions are
// 1000 (amount of milliseconds in a second) and 60 (amount of seconds in a minute).
console.log(get_whole_values(72000, [1000, 60]));
// -> [0,12,1] # 0 whole milliseconds, 12 whole seconds, 1 whole minute.
Если вам интересно, каковы входные параметры, представленные выше для второго объекта Date, см. их имена ниже:
new Date(<year>, <month>, <day>, <hours>, <minutes>, <seconds>, <milliseconds>);
Как отмечено в комментариях к этому решению, вам не обязательно указывать все эти значения, если только они не нужны для даты, которую вы хотите представить.
. // This is for first date
first = new Date(2010, 03, 08, 15, 30, 10); // Get the first date epoch object
document.write((first.getTime())/1000); // get the actual epoch values
second = new Date(2012, 03, 08, 15, 30, 10); // Get the first date epoch object
document.write((second.getTime())/1000); // get the actual epoch values
diff= second - first ;
one_day_epoch = 24*60*60 ; // calculating one epoch
if ( diff/ one_day_epoch > 365 ) // check , is it exceei
{
alert( 'date is exceeding one year');
}