Не думаю, что это проблема с настройками локали или часового пояса.
Я запускал скрипт для разных моментов времени, и это то, что я нашел.
Это Кажется, что числа дня недели (dotw) и недели недели (woty) не связаны.
В любом году week-1 не начинается с 1-й понедельник того года.
Dotw строго понедельник = 1, вт = 2 и т. д. c.
Woty это сложно.
Похоже что год будет иметь 53 недели, если 53-я неделя может быть завершена к 31-му дню c.
В противном случае год будет иметь 52 недели. И «неделя 1» следующего года начнется в декабре предыдущего года.
Например, 2016 год закончился на 53-й неделе. И 2017 год начался на «неделе 1»:
Date Doty* Dotw Woty
23-Dec-2016 358 5 52
24-Dec-2016 359 6 52
25-Dec-2016 360 7 53
26-Dec-2016 361 1 53
27-Dec-2016 362 2 53
28-Dec-2016 363 3 53
29-Dec-2016 364 4 53
30-Dec-2016 365 5 53
31-Dec-2016 366 6 53
01-Jan-2017 1 7 1
02-Jan-2017 2 1 1
03-Jan-2017 3 2 1
*Day of the year
Но в 2017 году, поскольку 53-я неделя не могла быть проведена до конца года, 31-го декабря c -17 была на «неделе 1» 2018:
Date Doty Dotw Woty
29-Dec-2017 363 5 52
30-Dec-2017 364 6 52
31-Dec-2017 365 7 1
01-Jan-2018 1 1 1
02-Jan-2018 2 2 1
03-Jan-2018 3 3 1
Аналогично для 2019-20, 52-я неделя закончилась 28-De c -19. И «неделя 1» 2020 года, начавшаяся 29-го декабря c -19:
Date Doty Dotw Woty
27-Dec-2019 361 5 52
28-Dec-2019 362 6 52
29-Dec-2019 363 7 1
30-Dec-2019 364 1 1
31-Dec-2019 365 2 1
01-Jan-2020 1 3 1
02-Jan-2020 2 4 1
03-Jan-2020 3 5 1
04-Jan-2020 4 6 1
Редактировать
Я пробовал несколько периодов, включая:
new Date(0) => Thu Jan 01, 1970
и
new Date(0, 0, 0) => Sat Dec 30, 1899 (?!)
Насколько я могу судить, woty меняется в воскресенье. Но dotw сбрасывается до 1 в понедельник. И как кратные 7, они продолжают этот цикл.
Таким образом, лучшее объяснение, по-видимому, состоит в том, что два не связаны , за исключением их 7-дневного смещения цикла на день .
И что начало новой недели
- в контексте
weekdays
циклично проходит с понедельника по воскресенье с понедельника = 1 - в контексте
week number in a year
(от 1 до 52 или 53) циклы от воскресенья до понедельника с новым номером недели, начинающимся с воскресенья.