【问题标题】:How to get the start and end of a week given arbitrary date time in the middle of the week with JS? [duplicate]如何使用JS在一周中的任意日期时间获取一周的开始和结束? [复制]
【发布时间】:2016-07-26 12:19:30
【问题描述】:

我有一个代表当前日期时间的 ISO 日期时间字符串:2016-07-26T11:56:59.792Z。如何获取当周的[开始日期,结束日期>?

开始:2016-07-25T00:00:00.000Z 结束:2016-07-32T00:00:00.000Z

【问题讨论】:

  • 我会使用datejs.com
  • 你试过什么?正如目前所说,这个问题听起来像是您希望人们为您解决问题;向我们展示您的尝试,我们将能够为您提供更好的指导!

标签: javascript datetime dayofweek


【解决方案1】:

您可以使用答案herehere 中给出的函数。

var year = 2016;
var week = 31;
document.write("first day: " + getDateOfISOWeek(week, year) + "<br>");


function getWeekNumber(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];
}

function getDateOfISOWeek(w, y) {
    var simple = new Date(y, 0, 1 + (w - 1) * 7);
    var dow = simple.getDay();
    var ISOweekStart = simple;
    if (dow <= 4)
        ISOweekStart.setDate(simple.getDate() - simple.getDay() + 1);
    else
        ISOweekStart.setDate(simple.getDate() + 8 - simple.getDay());
    return ISOweekStart;
}

因此,您可以在此日期上添加 7 天以获得最后日期。 (根据您需要的格式。)

【讨论】:

    【解决方案2】:

    试试这个方法。

    var utcToday = '2016-07-26T11:56:59.792Z';
    
    var start = startDate('2016-07-26T11:56:59.792Z');
    console.log(start);
    var end = endDate('2016-07-26T11:56:59.792Z');
    console.log(end);
    
    function startDate(dat){
    var date = new Date(dat);  
    var index = date.getUTCDay();
    date.setUTCDate(date.getUTCDate()-(index-1));
    date.setUTCHours('12');
    date.setUTCMinutes('00');
    date.setUTCSeconds('00');
    date.setMilliseconds('000');
    return date;
    }
    function endDate(dat){
    var date = new Date(dat);  
    var index = date.getUTCDay();
    date.setUTCDate(date.getUTCDate()+(7-(index-1)));
    date.setUTCHours('12');
    date.setUTCMinutes('00');
    date.setUTCSeconds('00');
    date.setMilliseconds('000');
    return date;
    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-05
      • 2014-05-18
      • 1970-01-01
      • 2021-01-18
      • 2021-05-19
      • 1970-01-01
      • 2013-06-08
      • 1970-01-01
      相关资源
      最近更新 更多