如何在 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.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
最终得到完全相同的值。以上是关于如何在 javascript 中获取当前日期减去 20 秒?的主要内容,如果未能解决你的问题,请参考以下文章