根据时刻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
正确答案是:
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的帮助
发生的事情是,您将startOf()
您的本地周2015-08-15,即星期日2015-08-09,然后您将这个ISO周,从星期一到星期日,重置到它的第一天,当然是星期一2015-08-02。
您需要使用startOf('isoWeek')
来保持一致的行为
相关文章:
- 给定特定日期(日/月/年)返回一周的开始 + 结束
- JS日期选择器能够:时间,日期,日期时间,星期几,一年中的一周,一年中的月份等
- 如何获取两个选定月份日期之间的一周的特定日期
- 使用 JavaScript 获取给定的日期年份、周数、一周内的日数
- 如何在 JavaScript 中将一周中的所有日期放入数组中
- 使用当前日期生成一周的所有日期,并在周一显示周开始日期,在周日显示周末
- 使用jQuery或JavaScript对一周、一个月和一年的日期进行排序
- Moment js没有在一周中的正确日期返回
- 如何从JavaScript中的日期编号中获取一周中的哪一天
- 如何从周号和年份中获取一周的第一个日期和最后一个日期
- 相对于这个日期的前一周
- 如何检查javascript日期是否从指定的一周以前
- 根据时刻js中的给定日期确定一周的第一天
- 获取一周中某一天的下一个日期
- 要显示数据的最后一周和任何两个日期之间的数据,我正在努力
- 如果我在JavaScript或jquery中有一个开始日期,我如何显示一周中所有日子的日期?
- 如何获得前一周的第一个和最后一个日期
- 如何获得一周的开始和结束给定的任意日期时间在周中使用JS
- 如何获取一周中存在于某个日期范围(Javascript)中的天数列表
- 考虑到一年从一周的中间开始,确定一周的开始和结束日期