我试图写一个脚本,从一个定义的日期减去5天,但似乎不工作,这里是我的代码:
var End_Day = sheet.getRange(i + 2, 20).getValue();
Logger.log(End_Day);
var End_day_2 = new Date();
End_day_2.setDate(End_Day.getDate()-5);
Logger.log(End_day_2);
结果不仅仅是5天
11:18:47 AM Info Sat Jun 04 00:00:00 GMT+08:00 2022
11:18:47 AM Info Fri Apr 29 11:18:47 GMT+08:00 2022
我很困惑为什么日期从六月移到了四月。
谢谢你看了一下
7条答案
按热度按时间vsaztqbk1#
尝试:
功能:
ffscu2ro2#
你应该学习更多关于Date.prototype.setDate()的知识,它只会改变一个给定Date示例的**月份的日期。
正如你发布的代码一样,根据控制台的结果,
End_Day
的月份是4
,End_day_2.setDate(4 - 5)
等于End_day_2.setDate(-1)
,End_day_2
的月份是April,因为April有30天,setDate(-1)
意味着setDate(29)
,所以你在最后得到了Apr 29
。一个正确的方法是减去5天的毫秒。
zkure5ic3#
我很困惑为什么日期从六月移到了四月。
这是因为您将日期设置为今天(
End_day_2
),而不是预定义的日期(End_day
)。变更
到
n1bvdmb64#
如果来自工作表的是字符串,则必须将日期字符串转换为日期对象。
另一件事是你必须在毫秒内工作,就像@vanowm说的那样:
606024*5 = 432 000 * 1 000 = 432 000 000
完全跳过这张纸
agyaoht75#
这就可以了,可以处理任何日期,也可以减去任何天数
eoigrqb66#
一周前
五天前
电子表格单元格中的日期起五天
uqxowvwt7#
您可以使用Utilities.formatDate()方法从Google App Script中定义的日期减去5天。
在本例中,我们首先创建一个Date对象来表示当前日期。然后,使用setDate()方法从当前日期减去5天。最后,使用Utilities.formatDate()方法格式化新日期,并使用Logger.log()方法将其记录到控制台。
您可以修改subtractDays变量以从日期中减去不同的天数,也可以使用不同的date对象作为开始。