javascript 两年(有闰年)的小时差
hours difference between two years (With leap year) in javascript
如何获得 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()
但这对我来说有点不对劲。
日期对象是您的服务器。
获取时差。然后乘以 min, sms。
为您提供年份之间的总时差。
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
闰年要分年分月。所以
March d + 59 闰年加1
…。取决于
十二月 d + 334 闰年加1
你可以试试这个。
hours = ((new Date()).setFullYear( 2016 ) - (new Date()).setFullYear( 2015 ))/(1000*3600);
计算两个日期(包括开始年份的第一天和结束年份的最后一天)的毫秒差,并将结果除以 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
观看演示 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
获取这两年的秒数。 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);
}
如何获得 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()
但这对我来说有点不对劲。
日期对象是您的服务器。 获取时差。然后乘以 min, sms。 为您提供年份之间的总时差。
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
闰年要分年分月。所以 March d + 59 闰年加1 …。取决于 十二月 d + 334 闰年加1
你可以试试这个。
hours = ((new Date()).setFullYear( 2016 ) - (new Date()).setFullYear( 2015 ))/(1000*3600);
计算两个日期(包括开始年份的第一天和结束年份的最后一天)的毫秒差,并将结果除以 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
观看演示 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
获取这两年的秒数。 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);
}