タイムテーブルをページングし、毎週日付を進め、新しい日付に関連する詳細を表示するページネーション機能があります。
いくつかの新しいデータをテストしているときに、ページングの問題が発生しました。つまり、2012 年 10 月 22 日を過ぎたページではありません。
コードをデバッグすると、2012 年 10 月 22 日を表す日付スタンプを 7 日間インクリメントすると、(strftime を介して) 2012 年 10 月 28 日の日付が返されるという問題の原因が最終的にわかりました。 2012 年 10 月。このエラーは、実質的に連続ループを引き起こします。これは、%W (毎週のページネーションを駆動する) が 2012 年 10 月 22 日の場合は 43、2012 年 10 月 28 日の場合は 43 であり、もちろん 2012 年 10 月 29 日の場合は 44 になるはずです。
この問題を特定して再現するための簡単なテストでは、次を使用しました。
/*
* test %W
*/
$time_Stamp_1 = mktime(0,0,0,10,22,2012);
echo "date : " . strftime("%d/%m/%Y", $time_Stamp_1);
echo "W for first time stamp " . $time_Stamp_1 . " is " . strftime("%W", $time_Stamp_1);
$time_Stamp_1a = $time_Stamp_1 += (60 * 60 * 24 * 7);
echo "new date : " . strftime("%d/%m/%Y", $time_Stamp_1a);
echo "W for new date time stamp: " . strftime("%W", $time_Stamp_1a);
$time_Stamp_2 = mktime(0,0,0,10,29,2012);
echo "W for second time stamp: " . strftime("%W", $time_Stamp_2);
ページネーションは、私がテストした他のすべての週の間でうまく移動し、明らかにこの増分/減分を適切に使用します.
うまくいけば、明らかな何かが欠けています。何かご意見は?