【问题标题】:Google App Script Adding one Day to a date [duplicate]Google App Script将一天添加到日期[重复]
【发布时间】:2017-04-15 02:04:30
【问题描述】:

我不知道如何在 Google App Script 中为日期添加一天。我有这个脚本:

function dateTest() {

var testDate = new Date();
var secondDate = new Date(testDate.getDate()+1);

 Logger.log(testDate);
 Logger.log(secondDate);
}

这会产生以下日志:

[16-11-30 16:35:02:499 GMT] 11 月 30 日星期三 16:35:02 GMT+00:00 2016

[16-11-30 16:35:02:500 GMT] 1 月 1 日星期四 01:00:00 GMT+01:00 1970

我不明白为什么它没有添加到日期?

【问题讨论】:

标签: javascript datetime google-apps-script


【解决方案1】:

改成:

var testDate = new Date();
var secondDate = new Date();
secondDate.setDate(testDate.getDate()+1);

这应该使这一天适合夏令时变化和闰年。

【讨论】:

  • 谢谢,我喜欢这个简单的答案
  • 这里有一个潜在的陷阱需要牢记,这取决于您使用它的目的。 getDate 获取月份中的哪一天,即今天是“14”,而不是 2020 年 2 月 14 日。如果您使用它来比较日期,您可能会遇到问题。例如,如果您想知道,今天的日期是否大于 X 日期? 2/1/2020 和 4/1/2020 都会返回 true,因为 14 > 1。
【解决方案2】:

你也可以说:

var tomorrow = new Date(Date.now() + 1000*60*60*24)

【讨论】:

  • 这确实有效,但我更喜欢第二个答案。不过感谢您的回复!
  • 不是一个好方法,因为在实行夏令时的地方,日子并不总是 24 小时。
  • Date 类知道这个吗?它怎么知道我在哪个时区,我可以强制它使用 UTC 吗?
【解决方案3】:

getDate() 获取月份中的日期。如果您将一个数字传递给 new Date(value) 中的 Date 构造函数,它希望该数字是自 Unix 纪元以来的毫秒数,请参阅 Date on MDN。因此,您将 31 毫秒(今天)添加到 unix 纪元,因此日期是 1970 年 1 月 1 日和一点点。

添加一天试试:

var secondDate = new Date(testDate.getTime() + 24 * 60 * 60 * 1000);

这会将一天中的毫秒数添加到 testDate 并从中创建一个新日期。

getTime() 获取自 Unix 纪元以来以毫秒为单位的日期表示,因此通过将一天中的毫秒数添加到它,您可以创建一个新的日期,即 +1 天。

【讨论】:

  • 太好了,感谢您的解释。我更喜欢第二个答案,因为它很简单。感谢您的时间。
  • 不是一个好方法,因为在实行夏令时的地方,日子并不总是 24 小时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 2012-10-25
  • 1970-01-01
  • 2017-12-03
  • 2014-05-24
  • 1970-01-01
  • 2014-09-08
相关资源
最近更新 更多