使用javascript从年和日历周获取周的开始和结束日期

使用javascript从年和日历周获取周的开始和结束日期,javascript,momentjs,Javascript,Momentjs,我需要使用Javascript/moment.js获取开始和结束日期的周数 作为输入,我有两个值:year和week,这是moment.js的isoweek 年份=‘2016’ 周='1' 应该给我2016年1月4日和2016年1月10日 其中日期的格式为德语形式的矩().format('DD.MM.YYYY') 您评论中的解决方案将在2017年1月1日产生不正确的结果: moment([2017,0,1]).year(2017).isoWeek(1).startOf('isoweek').fo

我需要使用Javascript/moment.js获取开始和结束日期的周数

作为输入,我有两个值:year和week,这是moment.js的isoweek

年份=‘2016’ 周='1'

应该给我2016年1月4日和2016年1月10日


其中日期的格式为德语形式的矩().format('DD.MM.YYYY')

您评论中的解决方案将在2017年1月1日产生不正确的结果:

moment([2017,0,1]).year(2017).isoWeek(1).startOf('isoweek').format('DD.MM.YYYY');
// = '04.01.2016'
这个更稳定:

//var year = 2016;
//var week = 1;
var startDate = moment([year, 5, 30]).isoWeek(week).startOf('isoweek'); 
var endDate = moment(startDate).endOf('isoweek');
startDate.format('DD.MM.YYYY'); // = '04.01.2016'
endDate.format('DD.MM.YYYY'); // = '10.01.2016'
说明:如果您使用上一年第53周的日期与isoWeek或周的日期一起初始化力矩实例,则该力矩实例的年组件将设置为上一年。所有附加力矩法均在“错误”年份运行。
因此,使用
时刻([year,5,30])
初始化时刻实例。当然,在2016年1月3日之后的任何一天,只有属于前一年第53周的几天会导致该问题

您评论中的解决方案将在2017年1月1日产生不正确的结果:

moment([2017,0,1]).year(2017).isoWeek(1).startOf('isoweek').format('DD.MM.YYYY');
// = '04.01.2016'
这个更稳定:

//var year = 2016;
//var week = 1;
var startDate = moment([year, 5, 30]).isoWeek(week).startOf('isoweek'); 
var endDate = moment(startDate).endOf('isoweek');
startDate.format('DD.MM.YYYY'); // = '04.01.2016'
endDate.format('DD.MM.YYYY'); // = '10.01.2016'
说明:如果您使用上一年第53周的日期与isoWeek或周的日期一起初始化力矩实例,则该力矩实例的年组件将设置为上一年。所有附加力矩法均在“错误”年份运行。
因此,使用
时刻([year,5,30])
初始化时刻实例。当然,在2016年1月3日之后的任何一天,只有属于前一年第53周的几天会导致该问题

您自己尝试了什么解决方案?矩(新日期(年,0,1)).isoWeekday(周).startOf('isoweek').format('DD.MM.YYYY');是我尝试过的,但我想我找到了一个解决方案:矩().year(year.val()).isoWeek(week.val()).startOf('isoWeek').format('DD.MM.YYYY')你自己尝试过什么解决方案?矩(新日期(year,0,1)).isoWeekday(week)。startOf('isoWeek').format('DD.MM.YYYY');这就是我所尝试的,但我想我已经找到了一个解决方案:矩().year(year.val()).isoWeek(week.val()).startOf('isoWeek')。格式('DD.MM.YYYY')。请不要只发布代码答案。再努力一点。请不要只发布代码答案。再努力一点。