Объяснение:
Я не думаю, что есть реальная проблема.
Путаница возникает из-за того, что неделя 1
началась в прошлом году.
Если вы console.log
все даты, начиная с 26th of December 2020
до 12th of January 2021
:
function myFunction() {
const December = [26,27,28,29,30,31];
const January =[1,2,3,4,5,6,7,8,9,10,11,12,13];
December.
forEach(n=>{console.log(Utilities.formatDate(new Date(2020,11,n), "Europe/Amsterdam", "yyyy-MM-dd"),"Week: ",
Utilities.formatDate(new Date(2020,11,n), "Europe/Amsterdam", "w"))});
January.
forEach(n=>{console.log(Utilities.formatDate(new Date(2021,0,n), "Europe/Amsterdam", "yyyy-MM-dd"),"Week: ",
Utilities.formatDate(new Date(2021,0,n), "Europe/Amsterdam", "w"))});
}
вы получите следующие результаты:
2020-12-26 Week: 52
2020-12-27 Week: 1 // Sunday
2020-12-28 Week: 1
2020-12-29 Week: 1
2020-12-30 Week: 1
2020-12-31 Week: 1
2021-01-01 Week: 1
2021-01-02 Week: 1
2021-01-03 Week: 2 // Sunday
2021-01-04 Week: 2
2021-01-05 Week: 2
2021-01-06 Week: 2
2021-01-07 Week: 2
2021-01-08 Week: 2
2021-01-09 Week: 2
2021-01-10 Week: 3 // Sunday
2021-01-11 Week: 3
2021-01-12 Week: 3
2021-01-13 Week: 3
По сути, 1st
неделя в прошлом году началась 2020-12-27
, 2nd
неделя 2021-01-03
, а 3rd
неделя 2021-01-10
, поэтому текущая неделя в соответствии с этой логикой — 3
, что является числом, которое вы получаете.
Обходной путь:
Если вы хотите изменить эту логику, вы можете вычесть 1
из текущего номера недели, чтобы получить 2
в качестве текущего номера недели:
var today = new Date();
var week = Utilities.formatDate(today, "Europe/Amsterdam", "w") - 1;
Или вы можете использовать этот ответ и настроить номер недели:
function exampleFunction() {
Date.prototype.getWeek = function() {
var onejan = new Date(this.getFullYear(),0,1);
return Math.ceil((((this - onejan) / 86400000) + onejan.getDay()+1)/7)-1;
}
var now = new Date();
Logger.log(now.getWeek());
}
Единственная проблема заключается в том, что первая неделя следующего года (который может быть и в этом году) будет иметь номер недели 0
. Но вы можете настроить это с помощью условия if
, чтобы этого не произошло.
person
soMario
schedule
12.01.2021