0

「x分前」タイプの関数(この例から)を作成しようとしていますが、何らかの理由で正しい結果が得られます...しかし、それに12時間が追加されます。私が与えている日付は正しく、私のタイムゾーンは正しいので、関数内の何かである必要がありますが、何も見つかりません。

これが私の関数です:

function when($dt,$precision=2){
        $times=array(   
            365*24*60*60    => "year",
            30*24*60*60     => "month",
            7*24*60*60      => "week",
            24*60*60        => "day",
            60*60           => "hour",
            60              => "minute",
            1               => "second"
        );

        $passed=time()-$dt;

        if($passed<5){
            $output='less than 5 seconds ago';
        } elseif($passed > 172800) {
             $output=date("jS F,Y",$dt);
        } else {
            $output=array();
            $exit=0;

            foreach($times as $period=>$name){
                if($exit>=$precision OR ($exit>0 && $period<60)) break;

                $result = floor($passed/$period);
                if($result>0){
                    $output[]=$result.' '.$name.($result==1?'':'s');
                    $passed-=$result*$period;
                    $exit++;
                } else if($exit>0){
                    $exit++;
                }
            }
            $output=implode(', ',$output).' ago';
        }
        return $output;
    }

何か案は?

4

1 に答える 1

0

php.ini でタイムゾーンを変更した場合は、必ず Apache を再起動してください。

または

コードにdate_default_timezone_set()を追加します。

date_default_timezone_set('America/Los_Angeles');
于 2012-06-11T21:23:20.250 に答える