【问题标题】:how can I get the current date minus 20 seconds in javascript?如何在 javascript 中获取当前日期减去 20 秒?
【发布时间】:2014-01-19 09:20:41
【问题描述】:

如何在 javascript 中获取当前日期减去 20 秒? 我不知道如何在 javascript 中将当前日期减去 20 秒 怎么办,我这样得到一个负值

有更简单的方法吗? 谢谢

var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
var ora = currentDate.getHours()
var minuti = currentDate.getMinutes()
var secondi = currentDate.getSeconds()-20

【问题讨论】:

  • new Date(new Date - 20000)

标签: javascript html date get


【解决方案1】:

试一试:

new Date(Date.now() - 20000);

Date.now() 返回自 1970 年 1 月 1 日 00:00:00 以来的毫秒数,因此我们只需从中减去 20000 毫秒,然后使用结果创建一个新日期。

正如@rjz 所说,您需要一个用于旧 IE 的 shim。 MDN 垫片如下:

if (!Date.now) {
     Date.now = function() { return new Date().getTime(); }
}

【讨论】:

  • 如果您打算在 IE 中使用它developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…),值得考虑使用 polyfill(或替代 Date.now
  • new Date().valueOf() 不也以毫秒为单位返回当前时间吗?这应该消除对 polyfill 的需要。
  • @GJK:是的,但是我们也可以直接使用.getTime()。较短的Date.now() 很好,但你是对的,不是绝对必要的。
  • @GJK 没错。只需 new Date(new Date - 20000) 就可以了。
  • @AaditMShah:啊,是的,我明白我没有抓住重点。那也是个好办法。
【解决方案2】:

我会这样做:

function DateOffset( offset ) {
    return new Date( +new Date + offset );
}

var twentySecondsAgo = DateOffset( -20000 );

// Should differ by 20 seconds (modulo 60)
alert(
    twentySecondsAgo.getSeconds() +
    '\n' +
    new Date().getSeconds()
);

使用此代码,您不需要任何 shims 或 polyfills 或任何类似的东西。我刚刚在 IE 5.5 和 Netscape 4.79 中对其进行了测试,它在那里运行良好!这就是为什么我在测试中使用alert() 而不是console.log(),所以我可以在那些旧浏览器中进行测试。

【讨论】:

    【解决方案3】:

    去掉getSeconds()之后出现的-20

    然后在它下面添加一行或更多

    secondi = secondi - 20;
    

    【讨论】:

    • 这不会改变任何东西。 secondi 最终得到完全相同的值。
    猜你喜欢
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 2016-10-30
    • 2010-12-04
    • 1970-01-01
    相关资源
    最近更新 更多