2012-03-30 41 views
2

对于调音师! 我在堆栈部分研究之后,在stackapps上创建了这个问题。 我需要删除这一个吗?带localStorage的smarthphone(android,ios)的HTML5应用程序date()

嗨我创建一个简单的HTML5应用程序,它使用超时()。 APP的基本功能是: 您选择一个项目并启动超时()。它工作正常,但如果我关闭应用程序,定时器当然会停止。 我试图将它存储在localStorage中,但它不适用于我所需要的。

这里是我的代码

获取当前日期

var current = new Date(); 

检查的localStorage为空。如果不是,则计算存储日期和当前日期之间的差值(以毫秒为单位)。

function update() { 
    if (localStorage.time != undefined){ 
    var diff = current - localStorage.time; 
    alert (diff) 
} 

update(); 

这里的函数保存日期进行存储,它检查两个日期之间的差异。

function save() { 
    localStorage.time = new Date(); 
    click_time = localStorage.time; 
    var diff = click_time - current; 
    alert (diff); 
    } 

明确localStorage的

function clear() { 
    localStorage.clear(); 
    } 

$(document).ready(function() { 
$('input#save').click(function(){ 
    save(); 
}); 
$('input#clear').click(function(){ 
    clear(); 
}); 
}); 


<input type="submit" value="click me!" id="save"/> 
<input type="submit" value="clear" id="clear"/> 

但我只是得到NaN的!!这个问题是怎么做我需要存储在localStorage的日期和我怎样才能得到它作为一个日期吗?

在此先感谢。

回答

1

替换所有new Date();new Date().getTime();

新的日期之间的差异()。的getTime()的会以毫秒为单位。

而只是为了阐述:

使用新的Date()将返回一个字符串这样的 “星期五2012年3月30日12时02分33秒格林尼治标准时间0400(EDT)。”所以当你试图在两个字符串之间执行减法时,你会得到NaN。

new Date()。getTime()将返回一个像这样的整数1333123359919.这是1970年1月1日(或类似的)的毫秒数。所以两者之间的差异会给你两次调用之间的毫秒数,这就是你想要的。

+0

谢谢!有用。由于我的名誉低,我不能给你一票。 – 2012-03-30 16:07:11

+0

完全没问题。很高兴我能帮上忙!另外,如果您需要将这些长整型转换回字符串,您可以创建另一个Date对象,例如'new Date(1333123359919)',其中1333123359919是从getTime()中保存的值。 – soundslikeneon 2012-03-30 16:09:47

+1

但奇怪的是,如果日期不在localStorage中,它可以正常工作。这就是为什么我有点困惑,我专注于localStorage函数而不是日期。 – 2012-03-30 16:28:04