web-dev-qa-db-ja.com

PHP選択した日付が他の日付よりも大きいかどうかのカーボンチェック

アプリケーションでPHP Carbonを使用し始めました。これは、DateTimeクラスを使用して日付/時刻を操作するよりもはるかに簡単なようです。選択した日付($ chosen_date)は別の日付($ whitelist_date)より大きいです。以下のコードでこれを試しました:

    $chosen_date = new Carbon($chosen_date);

    $whitelist_date = Carbon::now('Europe/London');
    $whitelist_date->addMinutes(10);

    echo "Chosen date must be after this date: ".$whitelist_date ."</br>";
    echo "Chosen Date: ".$chosen_date ."</br>";

    if ($chosen_date->gt($whitelist_date)) {

        echo "proceed"; 
    } else {
        echo "dont proceed";
    }

元の$ chosen_dateの値はPOST dataから取得されます。これが私が取得する出力です。

Chosen date must be after this date: 2015-09-22 21:21:57
Chosen Date: 2015-09-22 21:01:00
proceed

明らかに、選択された日付はホワイトリストの日付よりも長くありませんが、それでもifステートメントはtrueを返し、エコーの「続行」します。私は何度もコードを繰り返してきましたが、どこが間違っているのかわかりません。

16
aqq

それはかもしれない.....タイムゾーンが同じではないので、これを試してください

_$chosen_date = new Carbon($chosen_date, 'Europe/London');

$whitelist_date = Carbon::now('Europe/London');
$whitelist_date->addMinutes(10);
_

いつでもインスタンスを作成し、タイムゾーンを設定できることに注意してください。

_$date = new Carbon();
$date->setTimezone('Europe/London');

$whitelist_date = $date->now();
_

タイムゾーンが異なるユーザーのデータを管理する方法に関するヒントはありますか?

異なるタイムゾーンで異なるオブジェクトを作成できます。これを試して、結果を試してください。

_$london_date = new Carbon($chosen_date_from_london, 'Europe/London');
$colombia_date = new Carbon($chosen_date_from_colombia, 'Bogota/America');
_

それらを比較するとします。

_$are_different = $london_date->gt($colombia_date));
var_dump($are_different); //FALSE
_

いいえ、違いはありませんが、時計を見つめるときと世界のさまざまな場所で見ているときは異なりますが、今も同じ現在の瞬間にいます。

それでは、Carbon()の異なるオブジェクトまたはインスタンスを作成し、$instance->setTimeZone(TimeZone);を使用して異なるタイムゾーンを設定します。

14
Juan Bonnett