我正在写一个Greasemonkey脚本,我想知道它上次运行的时间。为此,我想用GM_setValue
存储当前时间,并将该时间与脚本再次运行的时间进行比较。
但是,似乎Date().getTime()
结果不会传递给GM_setValue
。例如,如果您运行:
var newtime = new Date().getTime();
GM_setValue('lastrun', newtime);
alert(GM_getValue('lastrun'));
由于警报框不会弹出,因此显然有错误。但是,如果您将第一行替换为:
var newtime = 1;
然后你会像预期的那样在警告框中返回1。
这几乎只是隔离了导致此问题的日期格式。关于如何处理这个的任何想法,或更好的方法来保存脚本运行的时间?
答案 0 :(得分: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);
}