3

奇妙な問題があります:
mysql データベースからいくつかのデータを取得し、それを strotime でタイムスタンプに変換します。次に、これらのタイムスタンプを for ループと比較します。

for ($i=$start;$i<=$end;$i=$i+86400){
 $ptag=date("w",$i);
 if ($i<=$checkdateend){
   if ($wochendays[$ptag]==1){
     if (!in_array($i,$solvedays)){
      $solvedays[]=$i;
     }
   }
 }
}

指定された日 (タイムスタンプも)
$wochendays=(0,0,1,0,1,0,0)

これは問題なく動作しますが、夏/冬の時間帯をまたぐと問題が発生します。
solvedays 配列には、次の値が含まれている必要があります。

27.10.2012
28.10.2012
29.10.2012

しかし、私は得る

27.10.2012
28.10.2012
28.10.2012

代わりは。
理由は夏から冬への変更だと思いますが、この問題を解決する方法がわかりません。ヒントはありますか?

4

2 に答える 2

2

DateTime を試してください:

$date = new DateTime('2006-12-12');
$date->modify('+1 day');
echo $date->format('Y-m-d');
于 2012-10-12T18:34:39.450 に答える
0

夏時間に基づく時間変更が発生しています。

この質問を参照してください: php - タイムスタンプ - 日の間隔は必ずしも 86400 秒とは限りません - なぜ?

于 2012-10-12T18:34:31.777 に答える