2

ライブラリ later.js を使用して、cron 式から次の日時の値を取得します。ただし、次の 5 回の結果は、時間のデフォルト (「2015/7/16 10:44:47」) では正しくありません。このResultは偏差「時」です。これは私のコードです。

<script src="../later.min.js" type="text/javascript"></script>
<script>
var cron = "0 0/10 7,8,9,10,11,13,14,15,16,17,18 ? 1/1 1-5 *";

var d = new Date("7/16/2015 10:44:47");
later.date.timezone(true);
var sched = later.parse.cron(cron, true);

var results = later.schedule(sched).next(5,d);
for (var i = 0; i < results.length; i++) {
    document.write('<p>' + results[i].toLocaleString() + '</p>');
}
</script>

結果が正しくありません:

14:00:00 2015/7/16

14:10:00 2015/7/16

14:20:00 2015/7/16

14:30:00 2015/7/16

14:40:00 2015/7/16

正しい結果http://www.cronmaker.com/を使用してテストします。

  1. 2015 年 7 月 16 日木曜日 午前 10 時 50 分
  2. 2015 年 7 月 16 日木曜日 午前 11:00
  3. 2015 年 7 月 16 日木曜日 11:10
  4. 2015 年 7 月 16 日木曜日 午前 11:20
  5. 2015 年 7 月 16 日木曜日 午前 11:30
4

1 に答える 1

0

私の質問に対する答えが見つかりました。したがって、参照するソリューションを投稿します。

ファイル later.js には、関数「itemSorter」があります (999 行目)。この関数は、crop 式から配列を並べ替えます (' ' と ',' を分割した後)。

function itemSorter(a, b) {
    return isHash(a) && !isHash(b) ? 1 : 0;
}

この関数を次のように変更します。

  function itemSorter(a, b) {
        if (isNaN(a) || isNaN(b)) {
            return a > b ? 1 : -1;
        }
        return a - b;
    }

later.js がない場合は、URL: https://github.com/bunkat/laterからダウンロードできます。

于 2015-07-16T07:59:15.223 に答える