Проверка углерода в 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))