【发布时间】:2018-08-07 21:21:22
【问题描述】:
我正在尝试使用给定日期(如 2018 年 10 月 2 日)的 javascript(如第 1 季度,第 1 周)在日历季度中查找第 # 周。输出需要是一个数字,表示当天所在季度的第 # 周。例如,如果我的日期是 18 年 1 月 1 日,我希望返回值“1” - 代表第 1 周。目的是在柱形图中比较一个季度的数据与另一个季度的数据,其中 x -轴点是周。例如,我想将第一季度第一周的数据与第二季度第一周的数据进行比较。我正在使用 Highcharts.js 来生成图表。
Example quarterly comparison chart
下面的讨论讨论如何返回周数。我正试图更进一步,在本季度获得第 # 周(而不是一年中的第 # 周):
Highstock - display number of week
function QW: (timestamp) {
var date = new Date(timestamp);
var firstDay = new Date(date.getFullYear(), 0, 1);
var day = firstDay.getDay() == 0 ? 7 : firstDay.getDay();
var days = Math.floor((date.getTime() - firstDay) / 86400000) + day; // day numbers from the first Monday of the year to current date
var week = Math.ceil(days / 7);
var quarterweek = 0;
//trying to get the quarter ranges here (assuming 13 week quarters - not taking into account leap year)...
//*should* return a number between 1 - 13.
if (week > 13 && week <= 26) { //q2
quarterweek = Math.floor(week / 2);
} else if (week > 26 && week <= 40) { //q3
quarterweek = Math.floor(week / 3);
} else if (week > 40 && week <= 52) { //q4
quarterweek = Math.floor(week / 4);
} else {
quarterweek = week;
}
return quarterweek;
}
但是,它不起作用,并且没有考虑闰年的情况,即季度可能比 13 周更长。任何帮助表示赞赏!
【问题讨论】:
-
使用moment.js进行这样的操作
-
如果你不知道:代码片段有一个内置的自动格式化按钮:i.stack.imgur.com/pI5af.png
-
let weekOfQuarter = (weekOfYear % 13) + 1不成功吗? -
你如何定义一个季度?有时一月是第一季度,有时是第三季度。您是否使用 ISO 周编号(即一年中的第一周是一年中的第一个星期四,2016 年 1 月 1 日是 2015 年的最后一周)?有的年份有 52 周,有的有 53 周。空闲周去哪儿了?你的星期是从周日到周六还是从周一到周日(或其他时间)?
-
我尝试使用常规周和 ISO 周。 ISO 周似乎在测试后效果更好(上面的示例中没有反映)。 Jan 是 Q1,但是我们有自定义会计季度的概念,可以通过设置 Q1 的月份来确定。我们的星期是周日到周六。
标签: javascript date