Validation 为什么谷歌表单中的日期验证今天拒绝';s日期是上午8点之前吗?

Validation 为什么谷歌表单中的日期验证今天拒绝';s日期是上午8点之前吗?,validation,date,google-apps-script,google-sheets,Validation,Date,Google Apps Script,Google Sheets,我创建了一个Google工作表来保存一个工作任务列表,其中有一个列来跟踪创建项目的日期,并构建了一个脚本来自动填充该列中的单元格,其中包含插入新行的日期 作为脚本目标的单元格(例如G9)使用以下验证公式,以确保当用户更改日期时,他们使用的日期既不是周末也不是将来: =和(isdate(G9),工作日(G9,2)Try 我不确定谷歌是否会将英国夏令时视为时区,但你也可以试试 var d = Utilities.formatDate(d, "BST", "yyyy-MM-dd HH:mm:ss");

我创建了一个Google工作表来保存一个工作任务列表,其中有一个列来跟踪创建项目的日期,并构建了一个脚本来自动填充该列中的单元格,其中包含插入新行的日期

作为脚本目标的单元格(例如G9)使用以下验证公式,以确保当用户更改日期时,他们使用的日期既不是周末也不是将来:

=和(isdate(G9),工作日(G9,2)Try

我不确定谷歌是否会将英国夏令时视为时区,但你也可以试试

var d = Utilities.formatDate(d, "BST", "yyyy-MM-dd HH:mm:ss");

谢谢你的建议,Aprillion。原来Google Sheets文件有自己的内部时区设置!在我的例子中,设置为美国太平洋时间(因此落后8小时)
(您可能认为它会像其他应用程序一样,自动从Windows中获取日期和时间信息!)
要将工作表的时区设置为正确的时区,您需要转到主菜单,单击“文件”,然后单击“电子表格设置…”,并根据需要进行调整。
脚本和验证现在都可以正常工作。

谢谢大家的帮助。

在上午8点之前未经验证的脚本的输出+公式的输出是什么?
=today()在4月份,看起来你的直觉很好。在上午8点之前,删除单元格验证后的脚本输出为“20/05/2015”。而=today()的输出为“19/05/2015”!我已经通过在另一个单元格中输入=now()作为公式来确认了这一点,它确实显示了8小时后的日期和时间,而现在8小时将返回到昨天。这意味着我的谷歌工作表的“内部时钟”不知怎的落后了8小时!为什么?也许谷歌帐户/谷歌文档和/或谷歌+中有一个关于时区的设置需要更新?你可能应该和谷歌的支持人员谈谈我猜Akshin,我试过你的建议,GMT和BST都试过了,但都不起作用。我怀疑这与谷歌的工作表有关“内部时钟”你会认为它会像其他应用程序一样自动从Windows获取日期和时间信息!它不是在Windows中运行的,它是在“云中”的服务器上运行的。所以,不,你不会想到这一点。
var d = new Date();
var d = Utilities.formatDate(d, "GMT+1", "yyyy-MM-dd HH:mm:ss");
var d = Utilities.formatDate(d, "BST", "yyyy-MM-dd HH:mm:ss");