Проверка углерода в PHP, если выбранная дата больше, чем другая дата

Я начал использовать PHP Carbon для своего приложения, так как это кажется намного проще, чем использовать дату и время с классом DateTime и манипулировать им. Что я хочу сделать, это проверить, больше ли выбранная дата ($ selected_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";
    }

Исходное значение $ selected_date исходит из данных POST. Вот вывод, который я получаю:

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

Понятно, что выбранная дата не больше даты белого списка, но оператор if возвращает true, а echo "продолжить". Я перебираю код снова и снова, но не могу понять, где я ошиблась.

2 ответа

Решение

Это может быть..... часовые пояса не совпадают, так что попробуйте это

$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);

Или попробуйте использовать следующее:

if ($chosen_date->gte($whitelist_date))
Другие вопросы по тегам