Различие между датами в JavaScript

Как найти различие между двумя датами?

61
задан S.L. Barth - Reinstate Monica 24 July 2012 в 07:38
поделиться

2 ответа

Используя объект 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>);

Как отмечено в комментариях к этому решению, вам не обязательно указывать все эти значения, если только они не нужны для даты, которую вы хотите представить.

.
98
ответ дан 24 November 2019 в 17:18
поделиться
    // 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');
    }
3
ответ дан 24 November 2019 в 17:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: