0

我正在编写一个 Greasemonkey 脚本,我想知道它上次运行的时间。为此,我想存储当前时间GM_setValue并将该时间与再次运行脚本的时间进行比较。

但是,Date().getTime()结果似乎不会传递给GM_setValue. 例如,如果您运行:

var newtime = new Date().getTime();
GM_setValue('lastrun', newtime);
alert(GM_getValue('lastrun'));

由于不会弹出警告框,因此显然存在错误。但是,如果您将第一行替换为:

var newtime = 1;

然后,您会像预期的那样在警报框中返回 1。

这几乎只是隔离了导致问题的日期格式。关于如何处理这个问题的任何想法,或者在脚本运行时间之间保存日期的更好方法?

4

1 回答 1

0

我有一个类似的问题。该数字太大,无法存储为 firefox cookie 值。我的解决方案是将精度限制为秒(除以 1000,减去余数)并减去 43 年(1356998400 秒)以将测量的日期从 2013 年 1 月 1 日午夜开始,所以我的代码如下所示:

var time = Math.floor((new Date().getTime() / 1000) - 1356998400);
GM_setValue("runTime", time);

检索看起来像:

   var time = GM_getValue("runTime", 0);
        if (time != 0) {
        var cur = Math.floor((new Date().getTime() / 1000) - 1356998400);
        var cur = cur - time;
        var sec = cur % 60;
        var min = Math.floor(cur / 60);
        console.log("Script took " + min + ":" + sec);
        }
于 2013-03-17T06:51:05.503 回答