【问题标题】:Need to find the week number in a calendar quarter of a given date with Javascript需要使用Javascript在给定日期的日历季度中查找周数
【发布时间】: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


【解决方案1】:

谢谢大家 - 通过使用上面 Sani Sing Huttunen 建议的模数运算符,我能够得到一个季度的周数。我在使用 momentjs 时也很幸运——谢谢 charlieftl!

【讨论】:

    猜你喜欢
    • 2022-01-02
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多