按日期获取一周中的第一天

时间:2018-10-30 17:51:45

标签: javascript

我想按日期获取一周的第一天,

此代码

  var firstDayOfWeek = new Date(now.setDate(now.getDate() - now.getDay()+1));

返回

  

2018年10月29日星期一17:50:02 GMT + 0000(格林威治标准时间)

我该如何以以下格式获取日期?

YYYY-MM-DD

3 个答案:

答案 0 :(得分:1)

考虑到您不想使用moment.js。

这是一种实现方式:

var now = new Date()
var firstDayOfWeek = new Date(now.setDate(now.getDate() - now.getDay()+1));

console.log(firstDayOfWeek.toISOString().substring(0,10))
// 2018-10-29
  

toISOString()方法使用ISO标准将Date对象转换为字符串。

     

该标准称为ISO-8601,格式为:YYYY-MM-DDTHH:mm:ss.sssZ

答案 1 :(得分:0)

您可以使用date-fns库的formatfirstDayOfWeek函数,该函数不使用moment.js,而仅使用原始Date对象。

以下是实现所需内容的摘要:

var firstDayOfWeek = format(startOfWeek(now), 'YYYY-MM-DD');

如果您希望默认情况下一周从星期一开始而不是星期日开始,您可以像这样将第二个参数传递给startOfWeek

var firstDayOfWeek = format(startOfWeek(now, { weekStartsOn: 1}), 'YYYY-MM-DD');

答案 2 :(得分:0)

您也可以这样:

function getMonday(d) {
  d = new Date(d);
  const day = d.getDay();
  const diff = d.getDate() - day + (day == 0 ? -6 : 1);
  return new Date(d.setDate(diff));
}

console.log(getMonday(new Date()).toISOString().substring(0, 10));