为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript中日期间的差异

JavaScript中日期间的差异

红糖糍粑 2019-07-20 14:37:42
JavaScript中日期间的差异如何找出两次约会的区别?
查看完整描述

3 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

通过使用日期对象及其毫秒值,可以计算差异:

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);

然后你就可以minutes分划seconds,然后将其转换为整数。hours分划minutes通过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.

如果您想知道上面提供的输入参数为第二个日期对象见他们的名字如下:

new Date(<year>, <month>, <day>, <hours>, <minutes>, <seconds>, <milliseconds>);

正如在此解决方案的注释中所指出的,您不一定需要提供所有这些值,除非它们是您希望表示的日期所必需的。


查看完整回答
反对 回复 2019-07-20
?
largeQ

TA贡献2039条经验 获得超7个赞

我发现了这个,这对我来说很好:

计算两个已知日期之间的差额

不幸的是,计算两个已知日期之间的日期间隔(如天、周或月)并不容易,因为不能只将Date对象添加到一起。为了在任何类型的计算中使用日期对象,我们必须首先检索日期的内部毫秒值,该值存储为一个大整数。这样做的函数是Date.getTime()。两个日期都被转换后,从前面的日期减去后一个日期,返回以毫秒为单位的差值。然后,可以通过将该数字除以相应的毫秒数来确定所需的间隔。例如,要获得给定毫秒数的天数,我们将一天的毫秒数除以86,400,000毫秒(1000 x 60秒x60分钟x24小时):

Date.daysBetween = function( date1, date2 ) {
  //Get 1 day in milliseconds
  var one_day=1000*60*60*24;

  // Convert both dates to milliseconds
  var date1_ms = date1.getTime();
  var date2_ms = date2.getTime();

  // Calculate the difference in milliseconds
  var difference_ms = date2_ms - date1_ms;

  // Convert back to days and return
  return Math.round(difference_ms/one_day); }//Set the two datesvar y2k  = new Date(2000, 0, 1); var Jan1st2010 = new Date(y2k.getFullYear() + 10, y2k.getMonth(), y2k.getDate());var today= new Date();//displays 726console.log( 'Days since ' 
           + Jan1st2010.toLocaleDateString() + ': ' 
           + Date.daysBetween(Jan1st2010, today));

舍入是可选的,这取决于您是否需要部分天数。

参照系


查看完整回答
反对 回复 2019-07-20
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

   // 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');
    }


查看完整回答
反对 回复 2019-07-20
  • 3 回答
  • 0 关注
  • 419 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信