【问题标题】:how to get week number of a year where sunday as the first day of a week in javascript [closed]如何在javascript中获取星期天作为一周的第一天的一年中的周数[关闭]
【发布时间】:2012-09-11 03:04:31
【问题描述】:

如何在javascript中获取星期天作为一周的第一天的一年中的周数,也是固定的年数?

例如2012-12-31 应与 2013-01-01 具有相同的年号和周号。

我找到了一个 sn-p 来做这个,但是一周总是从星期一而不是星期日开始,如何解决?

exports.getYearAndWeek = function(d) {
    // Copy date so don't modify original
    d = new Date(d);
    d.setHours(0,0,0);
    // Set to nearest Thursday: current date + 4 - current day number
    // Make Sunday's day number 7
    d.setDate(d.getDate() + 4 - (d.getDay()||7));
    // Get first day of year
    var yearStart = new Date(d.getFullYear(),0,1);
    // Calculate full weeks to nearest Thursday
    var weekNo = Math.ceil(( ( (d - yearStart) / 86400000) + 1)/7)
    // Return array of year and week number
    return [d.getFullYear(), weekNo];
}

【问题讨论】:

  • 程序员通常编写代码,而不是搜索某些内容并要求其他人修复他们发现的内容。你试过自己做你的工作吗?
  • @zerkms 我在这条线上试过 var weekNo = Math.ceil(( ( (d - yearStart) / 86400000) + 1)/7) 从来没有用过,斯坦格。
  • 您尝试过什么?我看到您刚刚按原样复制了该行。您是否尝试了解此代码的作用?
  • @zerkms 我不知道如果有人有更多经验来解决这个问题而不是自己解决这个问题,那是怎么回事。你不知道怎么回答就走开。
  • "2012-12-31 应该与 2013-01-01 具有相同的年数和周数" - 什么? 2012 年的日期如何与 2013 年的日期相同? 12 月的日期如何与 1 月的日期具有相同的周数?

标签: javascript date calendar


【解决方案1】:

如您的代码所示,一年中的第一周(从星期一开始的几周)是其中包含星期四的第一周。

如果您的周从星期日开始,则第一周将是包含星期三的第一周。

如果一年从周四到周六开始,那么到周日之前的日子将是上一年的最后一周。如果一年从星期一、星期二或星期三开始,则上一年的最后一个星期日是今年第一周的开始。

【讨论】:

  • 所以我应该这样做,d.setDate(d.getDate() + 3 - d.getDay());,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多