【问题标题】:from Date I just want to subtract 1 day in javascript/angularjs从 Date 我只想在 javascript/angularjs 中减去 1 天
【发布时间】:2014-08-05 10:37:34
【问题描述】:

在 new Date() 的帮助下,我如何实现这一点。 我的代码:

var temp =new Date("October 13, 2014 22:34:17");
console.log(new Date(temp-1));

要求:

before: Aug 4, 2014 11:59pm (EDT)
after:   Aug 3, 2014 11:59pm (EDT)

【问题讨论】:

标签: javascript angularjs-directive


【解决方案1】:

您需要指定要减去的时间量。目前它是 1,但 1 是什么?因此,尝试使用getDate() 获取日期,然后从中减去,然后使用setDate() 设置日期。

例如

var temp = new Date("October 13, 2014 22:34:17");
temp.setDate(temp.getDate()-1);

【讨论】:

  • 这甚至适用于 0 和负数,完美,谢谢!
  • 如果新日期是一个月的第一天,这将无法正常工作。
【解决方案2】:

简单的答案是您想从中减去几天的毫秒数。所以像下面这样的

var today = new Date('October 13, 2014 22:34:17');
var yesterday = new Date(today.getTime() - (24*60*60*1000));
console.log(yesterday);

这样做的问题在于,这确实让您提前了 24 小时,由于夏令时的变化等原因,这并不总是提前一天。如果这是你想要的,那很好。如果您想要更复杂的东西,请查看moment.js

【讨论】:

  • 只需执行昨天.sethours(23,59,59,999) 即可获取昨天午夜的日期。
  • 毫秒 (1/1000),而不是微秒 (1/1000000)。
  • 这会导致夏季/冬季时间减法出现问题!
  • 如答案中所述:“这确实让您提前了 24 小时,由于夏令时 [美国夏令时的名称] 等因素的变化,这并不总是提前一天” .但是,它适用于某些仅减去天数的用途。
【解决方案3】:

您可以像这样从今天的日期中简单地减去一天:

var yesterday = new Date(new Date().setDate(new Date().getDate()-1));

【讨论】:

  • 这个答案效果最好,因为它继续支持.getFullYear() 等方法,无需任何额外的转换。
  • 也适合我。当新日期是一个月的 1 日并且您从中减去 1-2 天时,第一个答案存在缺陷。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-30
  • 2012-08-06
  • 2021-12-31
  • 1970-01-01
相关资源
最近更新 更多