javascript中两年(闰年)的小时差异

时间:2015-04-08 07:18:44

标签: javascript jquery angularjs momentjs

如何在javascript

中获得两年(闰年)之间的小时差异

我有两年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()

但这对我来说不对。

7 个答案:

答案 0 :(得分:2)

您可以使用与此类似的功能:

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

答案 1 :(得分:1)

Date对象是您的服务器。 得到时差。然后用min,sms乘以。 给你几年之间的时间差异。

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

答案 2 :(得分:1)

闰年应按年份和月份指定。所以 3月d + 59闰年增加1 …。取决于 12月d + 334闰年增加1

答案 3 :(得分:1)

你可以尝试这样的事情。

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

答案 4 :(得分:1)

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

// difference in hours for two whole years (2015-2016)
var hourdiff = (new Date('2017/01/01') - new Date('2014/12/31'))/(1000*60*60);

您可以创建Date扩展名来计算特定年份的小时数:

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.prototype.hoursInYear = function() {
  return new Date(this.getFullYear(), 1, 29).getMonth() == 1 
          ? 8808 : 8784;
}

最后,使用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

答案 5 :(得分:1)

查看演示jsFiddle

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

答案 6 :(得分:1)

获得两年的秒数。 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);
}