JavaScript中的日期之间的差异

Sar*_*nya 61 javascript datetime datediff

如何找到两个日期之间的差异?

Sam*_*son 98

通过使用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.
Run Code Online (Sandbox Code Playgroud)

您可以通过将毫秒除以1000来获得秒数(作为整数/整数),将其转换为秒,然后将结果转换为整数(这将删除表示毫秒的小数部分):

var seconds = parseInt((b-a)/1000);
Run Code Online (Sandbox Code Playgroud)

然后你可以minutes通过除以seconds60 得到整数并将其转换为整数,然后hours除以minutes60并将其转换为整数,然后以相同的方式将更长的时间单位转换为整数.由此,可以创建一个函数,以获得较低单位的值和剩余的较低单位的时间单位的最大总量:

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.
Run Code Online (Sandbox Code Playgroud)

如果您想知道上面为第二个Date对象提供的输入参数是什么,请参阅下面的名称:

new Date(<year>, <month>, <day>, <hours>, <minutes>, <seconds>, <milliseconds>);
Run Code Online (Sandbox Code Playgroud)

如本解决方案的评论中所述,除非您希望表示日期,否则您不一定需要提供所有这些值.

  • 您不需要使用所有参数调用`Date`构造函数,只能使用Year和Month调用它,其他参数是可选的. (7认同)
  • 谢谢,CMS.我想确保用户明白他们可以非常精细地使用他们的规范. (2认同)
  • 我已经更新了解决方案来传达您的观点,CMS。我很欣赏单挑。 (2认同)