首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在google应用程序脚本中减去天数将不能反映每年的正确变化。

在google应用程序脚本中减去天数将不能反映每年的正确变化。
EN

Stack Overflow用户
提问于 2020-01-01 16:38:19
回答 3查看 1.4K关注 0票数 1

我试图在google应用程序脚本中减去以下解决方案:Trying to subtract 5 days from a defined date - Google App Script

然而,如果我们从一年的第一天起减去一天,那一年就不会减1。以下是我的代码:

代码语言:javascript
运行
复制
var StartDate = new Date(ResponceDetails[C3StartDate]);
var StartYear = StartDate.getYear();
var StartMonth = StartDate.getMonth();
var StartDay = StartDate.getDate();
var tempEndDate = new Date(StartYear+1, StartMonth, StartDay);
Logger.log(StartDate);
Logger.log(tempEndDate);
var EndDate = Utilities.formatDate(new Date(tempEndDate.getTime()-(24*3600*1000)),"GMT+8","MM/dd/YYYY");
Logger.log(EndDate);

此代码的目的是计算用户一年后的到期日(包括开始日期)。因此,它必须是加一年,减去1天。上面的代码可以吗?或者其他有类似问题的人?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-01-01 17:03:35

解决了我的问题!YYYY年必须是Utilities.formatDate(.)中的小写字母

更新后的守则:

代码语言:javascript
运行
复制
var StartDate = new Date(ResponceDetails[C3StartDate]);
var StartYear = StartDate.getYear();
var StartMonth = StartDate.getMonth();
var StartDay = StartDate.getDate();
var EndDate = Utilities.formatDate(new Date(StartYear+1, StartMonth, StartDay-1), "GMT+8", "MM/dd/yyyy");

但是任何更好的方法都是非常感谢的。如果有人在日期格式上有一份好的文档或参考资料,解释日期格式的细节确实有帮助。非常感谢!

票数 2
EN

Stack Overflow用户

发布于 2020-01-01 20:38:38

代码语言:javascript
运行
复制
function calcDate() {
  var date=new Date();
  var dueDate=new Date(date.getFullYear()+1,date.getMonth(),date.getDate()-1);
  Logger.log(Utilities.formatDate(date, Session.getScriptTimeZone(), "yyyy/MM/dd"));
  Logger.log(Utilities.formatDate(dueDate, Session.getScriptTimeZone(), "yyyy/MM/dd"));
  var tomorrow=new Date(date.getFullYear(),date.getMonth(),date.getDate()+1);
  Logger.log(Utilities.formatDate(tomorrow, Session.getScriptTimeZone(), "yyyy/MM/dd"));
}
票数 1
EN

Stack Overflow用户

发布于 2020-01-01 17:25:17

我更喜欢使用JS getTime()方法。它返回自1/1/1970以来的毫秒数。

然后,您可以以毫秒为单位增加/减去时间。

代码语言:javascript
运行
复制
function add_A_Day() {
  var StartDate = new Date(ResponceDetails[C3StartDate]).getTime();
  var EndDate = StartDate + 24 * 60 * 60 * 1000; // One day in milliseconds
  EndDate = new Date(EndDate);
  EndDate = Utilities.formatDate(EndDate, 'GMT+8', 'MM/dd/yyyy');
  Logger.log(EndDate);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59554220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档