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
为什么Date.getMinutes()在下午4:00返回2?_Date_Datetime_Google Apps Script_Google Sheets - Fatal编程技术网

为什么Date.getMinutes()在下午4:00返回2?

为什么Date.getMinutes()在下午4:00返回2?,date,datetime,google-apps-script,google-sheets,Date,Datetime,Google Apps Script,Google Sheets,我正在创建一个自定义函数,它在给定的时间内进行一些计算 当在单元格中输入时间时,例如4:00pm,它会自动转换为日期,在这种情况下12/30/1899 16:00:00,当调用函数getTheMinutes()时,它会返回2,而不是0 function getTheMinutes(dateTime){ return dateTime.getMinutes(); } 如果函数用于最近的日期,如5/1/2019 16:00:00,则函数的行为会有所不同 我希望用户能够在一个单元格中写入时间,然

我正在创建一个自定义函数,它在给定的时间内进行一些计算

当在单元格中输入时间时,例如
4:00pm
,它会自动转换为日期,在这种情况下
12/30/1899 16:00:00
,当调用函数
getTheMinutes()
时,它会返回
2
,而不是
0

function getTheMinutes(dateTime){
  return dateTime.getMinutes();
}
如果函数用于最近的日期,如
5/1/2019 16:00:00
,则函数的行为会有所不同


我希望用户能够在一个单元格中写入时间,然后在另一个单元格中使用自定义函数。请告诉我您的想法。

我做了一些测试,发现该公式在
10/5/1918 0:03:00
之前的任何一分钟都给出了错误的结果,从那时起,该公式按预期工作

这是我的床单


我需要在自定义公式中进行日期验证,以使其有用。我不知道为什么google sheets在单元格中键入一个时间时选择该日期作为默认日期,我认为应该改进。

既然您已经为您的电子表格指定了时区,我可以确认几乎一天前得出的结论,即危地马拉调整了其相对于UTC的差异。从1918年10月5日起,您已确认的内容将被视为两分钟

更具体地说,调整时间为2分4秒,从当天03:00开始生效:

(源版本
2019b
file
northamerica

这些年来,世界各地发生了很多这样的小调整(甚至在同一个国家的城镇之间),调整仍在继续,尽管通常是一个小时——从“标准”到夏季。Sheets非常正确地认识到“正常算术”在这种过渡期间“不起作用”,例如,从昨天中午到今天中午,对于任何一个特定位置,通常相差24小时,而时钟向前/向后的时间通常是23小时或25小时


这个故事的寓意是要注意,如果没有一个具体的日期,就必须假设索引编号为
0
——即1899年12月30日。

请在你的问题中包含足够的代码来复制这个问题。我不得不做一些假设,但是用你的代码,。很可能你所在的地方有一个时区偏移,与你期望的不同。1900年以前,许多地方甚至没有一个小时或半个小时的偏移量。顺便说一句,“12/30/1899 16:00:00”的解析依赖于实现,因此您可能会在不同的主机中得到不同的结果。@Santi所有这些都发生在google工作表中,因此我在单元格
A1
中键入
4:00 PM
,然后在单元格
B1
中键入
=getTheMinutes(A1)
,得到的结果是
2
。当然,获取分钟数并不是我想做的全部事情,只是if的一部分,我知道我可以使用函数
MINUTE()
来实现这一点。谢谢你的支持help@Char另外,请确保您的电子表格时区和脚本时区是相同的。如果您将日期转换为字符串,您将能够看到时区是否与您的数字相混淆。感谢您的有益研究。