【问题标题】:HTML5 application for smarthphone(android, ios) with localStorage date()带有 localStorage date() 的智能手机(android,ios)的 HTML5 应用程序
【发布时间】:2012-04-14 07:50:44
【问题描述】:

对于版主! 在对堆栈部分进行研究后,我在 stackapps 上创建了这个问题。 我需要删除这个吗?

您好,我正在创建一个使用 timeout() 的简单 HTML5 应用程序。 APP的基本功能是: 您选择一个项目,然后 timeout() 开始。它工作正常,但如果我关闭应用程序,计时器当然会停止。 我正在尝试将其存储在 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);
   }

清除本地存储

   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 中,以及如何将其作为日期获取?

提前致谢。

【问题讨论】:

    标签: html datetime date local-storage


    【解决方案1】:

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

    new Date().getTime() 之间的差异将以毫秒为单位。

    只是为了详细说明:

    使用 new Date() 将返回类似“Fri Mar 30 2012 12:02:33 GMT-0400 (EDT)”的字符串。因此,当您尝试在其中两个字符串之间执行减法运算时,您会得到 NaN。

    new Date().getTime() 将返回一个类似于 1333123359919 的整数。这是从 1970 年 1 月 1 日(或类似的时间)开始的毫秒数。因此,这两者之间的差异将为您提供两次调用之间的毫秒数,这就是您想要的。

    【讨论】:

    • 谢谢!!有用。由于我的声誉低,我不能给你投票。
    • 完全没问题。很高兴我能帮助你!此外,如果您需要将这些长整数转换回字符串,您可以创建另一个 Date 对象,例如 new Date(1333123359919),其中 1333123359919 是从 getTime() 保存的值。
    • 但奇怪的是,如果日期不在 localStorage 中,它可以正常工作。这就是为什么我有点困惑,我专注于 localStorage 函数而不是日期。
    • 哦,对了!当您创建一个通用的new Date() 时,它是一个 Date 对象,并且大部分时间都被视为一个字符串......但显然您实际上可以减去其中的两个并最终得到正确的答案。当您写入 localStorage 时,它​​变成一个真正的字符串,没有 Date 对象曾经拥有的其他属性。因此,当您尝试从 localStorage 中恢复它时,您最终只会得到一个字符串。记住...在 localStorage everything 是一个字符串。
    • 感谢您的建议。我正在构建我的第一个简单应用程序,其中包括 localStorage 和客户端数据库,这部分很重要,因为它应该处理一个计时器。当用户点击保存时,计时器启动,如果他们关闭应用程序并再次打开它,应用程序将计算时间差异并检查此时间和计时器之间的差异,以便从毫秒重新启动计时器左边。由于我的英语,我不知道我说的是否清楚。
    猜你喜欢
    • 2011-11-08
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多