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 に答える