在 moment js 中按给定日期确定一周的第一天
Determine first day of a week by a given date in moment js
我想根据 Moment.js 中的给定日期确定一周的第一天。这是我的代码:
var begin = moment("2015-08-15").startOf('week').isoWeekday(0);
console.log(begin);
var end = moment("2015-08-15").endOf('week').isoWeekday(0);
console.log(end);
我得到以下输出:
Object { _isAMomentObject: true, _i: "2015-08-15", _f: "YYYY-MM-DD", _isUTC: false, _pf: Object, _locale: Object, _d: Date 2015-08-01T22:00:00.000Z }
Object { _isAMomentObject: true, _i: "2015-08-15", _f: "YYYY-MM-DD", _isUTC: false, _pf: Object, _locale: Object, _d: Date 2015-08-09T21:59:59.999Z }
根据文档,本地默认为 'en',这意味着一周的第一天是星期日。在我看来正确的结果应该是:
begin = 2015-08-09
end = 2015-08-15
当我将 isoWeekday
从“0”更改为“1”时,结果如下所示:
Object { _isAMomentObject: true, _i: "2015-08-15", _f: "YYYY-MM-DD", _isUTC: false, _pf: Object, _locale: Object, _d: Date 2015-08-02T22:00:00.000Z }
Object { _isAMomentObject: true, _i: "2015-08-15", _f: "YYYY-MM-DD", _isUTC: false, _pf: Object, _locale: Object, _d: Date 2015-08-10T21:59:59.999Z }
这也是错误的。正确答案是:
begin = 2015-08-10
end = 2015-08-16
发生的事情是,您正在获取 startOf()
本地周 2015-08-15,即星期日 2015-08-09,然后您正在重置这个 ISO 周,也就是周一到周日,到它的第一天,当然是周一2015-08-02。
您需要使用 startOf('isoWeek')
以获得一致的行为。
正确答案是:
var begin = moment().subtract(1, 'week').startOf('week').format("YYYY MM DD");
var end = moment().subtract(1, 'week').endOf('week').format("YYYY MM DD");
感谢@MattJohnson 的帮助
我想根据 Moment.js 中的给定日期确定一周的第一天。这是我的代码:
var begin = moment("2015-08-15").startOf('week').isoWeekday(0);
console.log(begin);
var end = moment("2015-08-15").endOf('week').isoWeekday(0);
console.log(end);
我得到以下输出:
Object { _isAMomentObject: true, _i: "2015-08-15", _f: "YYYY-MM-DD", _isUTC: false, _pf: Object, _locale: Object, _d: Date 2015-08-01T22:00:00.000Z }
Object { _isAMomentObject: true, _i: "2015-08-15", _f: "YYYY-MM-DD", _isUTC: false, _pf: Object, _locale: Object, _d: Date 2015-08-09T21:59:59.999Z }
根据文档,本地默认为 'en',这意味着一周的第一天是星期日。在我看来正确的结果应该是:
begin = 2015-08-09
end = 2015-08-15
当我将 isoWeekday
从“0”更改为“1”时,结果如下所示:
Object { _isAMomentObject: true, _i: "2015-08-15", _f: "YYYY-MM-DD", _isUTC: false, _pf: Object, _locale: Object, _d: Date 2015-08-02T22:00:00.000Z }
Object { _isAMomentObject: true, _i: "2015-08-15", _f: "YYYY-MM-DD", _isUTC: false, _pf: Object, _locale: Object, _d: Date 2015-08-10T21:59:59.999Z }
这也是错误的。正确答案是:
begin = 2015-08-10
end = 2015-08-16
发生的事情是,您正在获取 startOf()
本地周 2015-08-15,即星期日 2015-08-09,然后您正在重置这个 ISO 周,也就是周一到周日,到它的第一天,当然是周一2015-08-02。
您需要使用 startOf('isoWeek')
以获得一致的行为。
正确答案是:
var begin = moment().subtract(1, 'week').startOf('week').format("YYYY MM DD");
var end = moment().subtract(1, 'week').endOf('week').format("YYYY MM DD");
感谢@MattJohnson 的帮助