javascript中两年(含闰年)之间的时差 如何在javascript中获得两年(闰年)之间的时差

javascript中两年(含闰年)之间的时差 如何在javascript中获得两年(闰年)之间的时差,javascript,jquery,angularjs,momentjs,Javascript,Jquery,Angularjs,Momentjs,我有2015年和2014年两个年头 var year1="2015"; var year="2016"; 我想通过一行代码(有闰年和无闰年)获得上述年份之间的总小时数差异 我试过下面的代码 // get hours from one year var date = new Date; var Hours= date.getFullYear().getHours(); // get hours between two years var H

我有2015年和2014年两个年头

var year1="2015";
var year="2016";
我想通过一行代码(有闰年和无闰年)获得上述年份之间的总小时数差异

我试过下面的代码

// get hours from one year
    var date = new Date;        
    var Hours= date.getFullYear().getHours();


 // get hours between two years    

    var Hours= (date.getFullYear()-dat2.getFullYear()).getHours()
但我有点不对劲

日期对象是您的保护程序。 得到时间差。然后乘以min,s,ms。 提供年与年之间的时间差和总小时数

var year=2015,
year1=2016,
timeDiff =(new Date("01/01/"+year1)-new Date("01/01/"+year))/(1000*60*60);

您可以使用以下类似的功能:

function getHoursBetweenYears(startYear, endYear) {
    var startDate = new Date(startYear, 0, 1),
        endDate = new Date(endYear, 0 ,1);

    return (+endDate - +startDate) / 3600000;
}
用法如下:

getHoursBetweenYears(2012, 2013) // 8784

闰年应按年份和月份指定。所以 3月d+59闰年加1 ……直到
12月d+334如果闰年加1,你可以试试这样的方法

hours = ((new Date()).setFullYear( 2016 ) - (new Date()).setFullYear( 2015 ))/(1000*3600);

计算两个日期(包括开始年份的第一天和结束年份的最后一天)之间的差异(以毫秒为单位),并将结果除以3600000(1000*60*60=一小时内的毫秒):

您可以创建一个
日期
扩展来计算某一年的小时数:

Date.prototype.hoursInYear = function() {
  return ( (new Date(this.getFullYear()+1, 0, 1)) - 
           (new Date(this.getFullYear()-1, 11, 31)) ) / 3600000; }
// usage
new Date(1997, 0, 1).hoursInYear(); // => 8784 
new Date(2008, 0, 1).hoursInYear(); // => 8808 (leap year)
甚至(闰年的小时数是恒定的)

最后,使用
Date
扩展,这可能是一种从[startyear]开始计算[n年]小时数的方法:

function calcHours(startyear, numyears) {
  return isNaN(new Date(startyear, 0, 1))
         ? null // invalid year value
         : Array.apply(null, {0: startyear, length: numyears})
           .map(function(v, i) {return v == this ? v : this + 1;}, startyear)
           .reduce( function(a, b) { 
                     return a +  new Date(b, 0, 1)
                                   .hoursInYear();}, 0);
}
// usage
calcHours(2000, 2); //=> 17592 (2000 is leap year)
calcHours(2001, 2); //=> 17568
查看演示

答复

Hours: 8760

获得两年的秒数。setFullYear以毫秒为单位提供unix时间戳。除以1000,你有秒。得到两年之间的差值,并将其除以3600(每小时秒数)。那么你就有了时间上的差异

function getDiffHours (year1, year2) {
    var d1 = new Date().setFullYear(year1) / 1000;
    var d2 = new Date().setFullYear(year2) / 1000;
    var diff = Math.abs(d2 - d1);
    return  Math.floor(diff / 3600);
}

你试过什么吗?@KooiInc是的,我试过一些代码,但我的代码只在没有闰年的情况下工作。如果你在问题中显示你的试用期,我们可以更好地帮助你我更新了我的问题var date=new date();使用括号!可以把它放在一行tbhHello@RameshRajendran中,因为它起作用了。我是日期对象,所以它检查休假是否使用366天,否则一年中使用365天。
var start = new Date(2015, 0, 0);
var end = new Date(2016, 0, 0);
var diff = end - start;
var oneDay = 1000 * 60 * 60;
var day = Math.floor(diff / oneDay);
alert("Hours: " + day);
Hours: 8760
function getDiffHours (year1, year2) {
    var d1 = new Date().setFullYear(year1) / 1000;
    var d2 = new Date().setFullYear(year2) / 1000;
    var diff = Math.abs(d2 - d1);
    return  Math.floor(diff / 3600);
}