Javascript Greasemonkey脚本无法将日期/时间传递给GM_setValue

Javascript Greasemonkey脚本无法将日期/时间传递给GM_setValue,javascript,greasemonkey,Javascript,Greasemonkey,我正在写一个Greasemonkey脚本,我想知道它上次运行的时间。为此,我想用GM_setValue存储当前时间,并将该时间与脚本再次运行的时间进行比较 但是,Date().getTime()结果似乎不会传递给GM\u setValue。例如,如果您运行: var newtime = new Date().getTime(); GM_setValue('lastrun', newtime); alert(GM_getValue('lastrun')); 由于警报框不会弹出,因此明显存在错误。

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

但是,
Date().getTime()
结果似乎不会传递给
GM\u setValue
。例如,如果您运行:

var newtime = new Date().getTime();
GM_setValue('lastrun', newtime);
alert(GM_getValue('lastrun'));
由于警报框不会弹出,因此明显存在错误。但是,如果将第一行替换为:

var newtime = 1;
然后,您会像预期的那样在警报框中返回1


这在很大程度上只是隔离了造成问题的日期格式。关于如何处理这个问题,或者更好地保存脚本运行时间间隔的方法,有什么想法吗?

我也有类似的问题。该数字太大,无法存储为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);
        }

您还可以将其转换回日期对象:var lastrun=new date((GM_getValue(“runTime”)+1356998400)*1000);