js日期处理-周数

记录解决获取日期为当年第几周问题,之所以记录周数的运算,而不是月,是因为周存在跨年特性:

通常一年第一周和最后一周都会出现跨年现象。程序在不允许两年出现重叠周的情况下,会约定以周四所在日期的年份为主,即周四的日期为哪一周,则这周归属于哪一年。比如2019-12-30 ~ 2020-1-5 按中国习惯周一为第一天,该日期为19年而周日5号为20年,此时以周四2020-1-2所在年份为主,所以该周应该归属在2020年第一周。

常用方法

// 获取日期所在周为一年第几周 假设每周周一为第一天

function getWeekIndex(d) {

    // 截掉时分秒保留整数天

    var date = new Date((d || new Date()).toLocaleDateString());

    // 设置日期为当前周周四

    date.setDate(date.getDate() + (4 - (date.getDay()||7)));

    var year = date.getFullYear();

    var firstDate = new Date(year, 0, 1);

    firstDate.setDate(firstDate.getDate() + (4 - (firstDate.getDay()||7)));

    // 当年第一天早于周四 第一周延后七天

    if (firstDate.getFullYear() < year) {

        firstDate.setDate(firstDate.getDate() + 7);

    }

    // 计算当前周和第一周之间周数差

    return Math.ceil(((date - firstDate) / 86400000 + 1) / 7 );

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、js获取当前日期时间 var myDate = new Date(); myDate.getYear(); ...
    李二丶阅读 1,964评论 0 0
  • 项目统计中遇到:mysql 获取 当年年周次。到前端来用js转换成日期区间 function getXDate(y...
    A小发_bff0阅读 3,921评论 1 1
  • 一、Date对象 什么是Date对象? Date对象用于处理日期和时间,Date对象记录着从1970年1月1日00...
    小五丶_阅读 332评论 0 0
  • 全系列文章索引: IOS开发问题索引(一) IOS开发问题索引(二) IOS开发问题索引(三) IOS开发问题索引...
    Kevin_Junbaozi阅读 1,249评论 0 0
  • 一个来自远方朋友的问候,让人觉得格外温暖。 其实我们交集不多,仅算得上是点头之交。见了面会打招呼,之前因为工作有交...
    苏穆凉阅读 154评论 0 1