Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Utilities.formatDate从第7天开始一周,而不是从第1天开始_Javascript_Date_Datetime_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript Utilities.formatDate从第7天开始一周,而不是从第1天开始

Javascript Utilities.formatDate从第7天开始一周,而不是从第1天开始,javascript,date,datetime,google-apps-script,google-sheets,Javascript,Date,Datetime,Google Apps Script,Google Sheets,根据其文档,其工作原理如下。 您可以很容易地看出,本周将从周一开始,即第1天。 为什么我的一周从周日开始,即使它显然是作为第7天输出的 函数testDate(){ var ss=SpreadsheetApp.getActiveSpreadsheet(); var sheet=ss.getSheetByName(“历史”); var扩展=2; var arrayDates=sheet.getRange(3,2,扩展名).getValues(); //展平阵列 函数展平(tdArray){retu


根据其文档,其工作原理如下。
您可以很容易地看出,本周将从周一开始,即第1天。
为什么我的一周从周日开始,即使它显然是作为第7天输出的

函数testDate(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName(“历史”);
var扩展=2;
var arrayDates=sheet.getRange(3,2,扩展名).getValues();
//展平阵列
函数展平(tdArray){return[].concat.apply([],tdArray);}
var arrayDates=扁平化(arrayDates);
//从日期中“提取”周数
var arrayWeekNums=arrayDates.map(函数(el){return Utilities.formatDate(el,“CET”,“uyww”);});
//CET=中欧时间
//u=一周中的某一天;
//y=年,以4位数字表示;
//ww=两位数的周数
Logger.log(arrayWeekNums);
Logger.log(arrayDates);
}
//Logger.log(arrayWeekNums);
//  [7201803, 6201802]
//7-2018-03周日:7;年份:2018年;周数:03 ;;
//6-2018-02周日:6;年份:2018年;周数:02??
//Logger.log(arrayDates);
//[20-01-11 22:21:54:187 CET][Sun Jan 14 00:00:01 GMT+01:00 2018,Sat Jan 13 23:59:59 GMT+01:00 2018]
我还将项目的全球设置从美国切换到了任何欧洲国家:没有任何变化。
我怎样才能改变这个

根据请求编辑:
1.“Importazioni internazionali”又名电子表格时区(文件>电子表格设置>区域设置),此时为“意大利”,但即使是“美国”,结果也是一样的

2.脚本时区(文件>项目设置):“GMT+01:00-巴黎”

电子表格副本:

我认为这不是语言环境或时区设置的问题

我在不同的时间点运行脚本,这就是我发现的

似乎一周中的某一天(dotw)和一年中的某一周(woty)的数字没有关联

在任何一年中,第一周都不会在该年的第一个星期一开始

Dotw严格来说是Mon=1,Tue=2,等等

沃蒂很狡猾

似乎一年有53周,只要第53周可以在12月31日前完成

否则一年将有52周。下一年的“第一周”将从上一年的12月开始

例如,2016年在第53周结束。2017年从“第一周”开始:

但2017年,由于第53周无法在年底前完成,2017年12月31日是2018年的“第一周”:

与2019-20年类似,第52周于19年12月28日结束。2020年“第一周”于19年12月29日开始:

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

据我所知,woty在星期天改变。但dotw在周一重置为1。作为7的倍数,它们保持这个循环

因此,最好的解释似乎是,两个不相连,除了它们的7天周期被一天抵消

这是新一周的开始

  • 工作日的上下文中
    从周一到周日循环,周一=1
  • 在一年中的
    周数
    (1到52或53)的上下文中,循环通过周日到周一,新周数从 星期天

请添加一个。这是因为不清楚您是使用自定义函数还是以其他方式调用包含代码行的函数,以及
arrayDates
what's 1.电子表格时区(文件>电子表格设置>区域设置)和2.脚本时区(文件>项目设置)的内容是什么?3.提供
Logger.log(arrayDates)
尝试将时区更改为任意一个。在相同的偏移(例如阿姆斯特丹和拉各斯在+0100)中可能的不同区域可能考虑不同的日子,如第1天。另外,它应该是
CET
而不是
ECT
。请共享一份您的电子表格。@Tedinoz完成,电子表格添加;校长:我已经按照你的建议试过了,但是没有什么改变。这是真的:我把CET和ECT弄错了,也改变了,但到目前为止没有区别。谢谢我想我明白你的意思,但那不是问题的关键。以2018年为例,这是我的剧本之年:一年的第一天是星期一,因此2018年的第一周恰好开始于2018年1月1日星期一,而不是2017年12月31日星期日,正如您在第二张表格中所写。这就是问题的关键:为什么一年中的第一天是星期一,甚至我所在的地区设置为欧洲国家和时区,一周都从星期天开始?如果我错了,请纠正我,谢谢你的回答。我已经在回答中添加了更多的细节。我认为这是一个“事情就是这样”的问题好的,谢谢。让我试着向谷歌提出这个问题,看看他们在投票前是否有话要说。谢谢
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 (?!)