根据Javascript中的周数获取日期周期的简单方法

Simple way to get date period according to week number in Javascript

本文关键字:周期 简单 方法 取日期 周数获 Javascript 根据      更新时间:2023-09-26

全部:

有人能给我一个简单的方法,根据周数计算开始UTC时间和结束UTC时间吗?例如,现在是第29周,从2016-07-18(星期一)到2016-07-24(星期日)。在这种情况下,我需要知道开始/结束日期是什么,以及它们的UTC时间是多少

感谢

使用"javascript从周数计算日期"answers"javascript-从当前日期获取一周的第一天"的答案组合,同时使用get/set函数的UTC变体,您可以得出:

function getDateOfISOWeek(w, y) {
    var simple = new Date(Date.UTC(y, 0, 1 + (w - 1) * 7));
    var dow = simple.getUTCDay();
    var ISOweekStart = simple;
    if (dow <= 4)
        ISOweekStart.setUTCDate(simple.getUTCDate() - simple.getUTCDay() + 1);
    else
        ISOweekStart.setUTCDate(simple.getUTCDate() + 8 - simple.getUTCDay());
    return ISOweekStart;
}
function getEndOfISOWeek(d) {
        var endOfISOWeek = new Date(d.getTime());
    endOfISOWeek.setUTCDate(endOfISOWeek.getUTCDate() + 6); // six days
    endOfISOWeek.setUTCHours(23);
    endOfISOWeek.setUTCMinutes(59);
    endOfISOWeek.setUTCSeconds(59);
    return endOfISOWeek;
}
var startOfWeek = getDateOfISOWeek(29,2016);
var endOfWeek = getEndOfISOWeek(startOfWeek);
console.log(startOfWeek.toUTCString(), endOfWeek.toUTCString());

上面代码的JSFiddle

只需依靠1月1日。

示例:

function getBounds(weekNum, year) { // getBounds(weekNum [, year])
    var week = 604800000; // 1000 * 60 * 60 * 24 * 7
    year || (year = (new Date()).getFullYear()); // Defaults to current year.
    var d = Date.parse(year+'-1-1');
    var wEnd = d + week * weekNum; // We count weeks from 1.
    return [wEnd - week, wEnd];
};
console.log(getBounds(29)); // [ 1468537200000, 1469142000000 ] (during 2016)
console.log(getBounds(29, 2016)); // [ 1468537200000, 1469142000000 ] (forever)