MomentJS给了我错误的一年,为什么?

时间:2016-12-31 22:34:32

标签: javascript momentjs

我非常困惑或太累......

var year = 2016;
var week = 40;

var startDate = moment().year(year).week(week).day(1).startOf('day').toDate();
var endDate = moment(startDate).add(6, 'days').endOf('day').toDate();

console.log(new Date()); // Sun Jan 01 2017 00:28:44 GMT+0200 (FLE Standard Time) 

console.log(year, week, startDate, endDate); // 2016 40 Mon Sep 28 2015 00:00:00 GMT+0300 (FLE Daylight Time) Sun Oct 04 2015 23:59:59 GMT+0300 (FLE Daylight Time) <-- look the year, 2015!!

Screenshot of the console output

我想要的只是从2016年第40周开始的日期范围,但它从2015年开始给出那一周。为什么?

编辑:要重现此问题,您需要MomentJS的芬兰语区域设置。

此外,如果您拨打moment()。year()。week()或moment()。week()。year()

,则会有所不同。
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>t</title>    
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/locale/fi.js"></script>
</head>

<body>
<script>
    var year = 2016;
    var week = 40;
    document.write(moment().format());
    document.write("<br>");
    var startDate = moment().year(year).week(week).day(1).startOf('day').toDate();
    var endDate = moment(startDate).add(6, 'days').endOf('day').toDate();

    document.write(new Date());
    document.write("<br>");
    document.write('startDate = '+startDate);
    document.write("<br>");
    document.write('endDate = '+endDate);

</script>
</body>
</html>

enter image description here

P.S。它在2016年的消失中运作正常,但自2017年以来它给出了奇怪的2015年 P.P.S.新年快乐 ! :)

0 个答案:

没有答案