JavaScript 计算一年中的某一天 (1 - 366)
2022-08-30 02:38:59
如何使用 JavaScript 计算一年中从 1 到 366 的那一天?
例如:
-
January 3
应该是 。3
-
February 1
应该是 。32
如何使用 JavaScript 计算一年中从 1 到 366 的那一天?
例如:
January 3
应该是 。3
February 1
应该是 。32
以下OP的编辑:
var now = new Date();
var start = new Date(now.getFullYear(), 0, 0);
var diff = now - start;
var oneDay = 1000 * 60 * 60 * 24;
var day = Math.floor(diff / oneDay);
console.log('Day of year: ' + day);
编辑:当日期在3月26日至10月29日之间并且时间早于凌晨1点(例如00:59:59)时,上述代码将失败。这是由于代码未考虑夏令时。您应该对此进行补偿:now
now
var now = new Date();
var start = new Date(now.getFullYear(), 0, 0);
var diff = (now - start) + ((start.getTimezoneOffset() - now.getTimezoneOffset()) * 60 * 1000);
var oneDay = 1000 * 60 * 60 * 24;
var day = Math.floor(diff / oneDay);
console.log('Day of year: ' + day);
这适用于所有国家/地区的夏令时更改(上面的“中午”在澳大利亚不起作用):
Date.prototype.isLeapYear = function() {
var year = this.getFullYear();
if((year & 3) != 0) return false;
return ((year % 100) != 0 || (year % 400) == 0);
};
// Get Day of Year
Date.prototype.getDOY = function() {
var dayCount = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
var mn = this.getMonth();
var dn = this.getDate();
var dayOfYear = dayCount[mn] + dn;
if(mn > 1 && this.isLeapYear()) dayOfYear++;
return dayOfYear;
};