如何在 javascript 中获取当前日期减去 20 秒?

Posted

技术标签:

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

我不知道如何在 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) 【参考方案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.nownew 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 最终得到完全相同的值。

以上是关于如何在 javascript 中获取当前日期减去 20 秒?的主要内容,如果未能解决你的问题,请参考以下文章

如何从当前日期中减去一天然后在 Hive 中转换为字符串

在 where 子句中从当前日期减去 30 天

如何用Python在指定日期上减去7天?

如何在javascript中计算X天前[重复]

在java项目中,在jsp传入一个值(日期),jsp和数据库都是string类型的,如何把传入的当前值减去一个月?

如何从Javascript日期中减去php日期