Я хотел бы взять две переменные: одну, представляющую дату, и другую на время, а затем объединить их, чтобы сделать одну дату.
Затем я хотел бы использовать эту комбинированную дату и время, чтобы проверить, соответствует ли текущая дата и время на 24 часа или меньше от комбинированных дат и времени.
$game_date = $game['date']; $game_time = $game['time']; $combined_date_and_time = date('$game_date $game_time');
Чтения $ game_date хранятся так: 03/28/2013
Чтения $ game_time хранятся так: 07:05
На выходе $ combined_date_and_time читается как:
$2pm03America/Los_Angeles_28pm31America/Los_Angeles $2pm03America/Los_Angeles_313803America/Los_Angeles
что, конечно, неправильно.
Можно ли объединить их в одну дату, а затем сравнить?
$game_date = game['date']; $game_time = game['time']; $combined_date_and_time = $game_date . ' ' . $game_time; $past_date = strtotime($combined_date_and_time); $hours = 24; // Check if date is more recent than the specified number of hours if ((time() - $past_date) < (60 * 60 * $hours)) { echo 'Yes!'; }
Но будь осторожен! Если ваша дата когда-либо хранится в европейском формате ( dd/mm/yyyy
), вам нужно будет изменить порядок до разбора даты, иначе это не сработает.
Если разделитель даты -
или .
, то предполагается европейский формат.
if (strpos($game_date, '-') !== false) { list($day, $month, $year) = explode('-', $game_date); $game_date = $month . '/' . $day . '/' . $year; } else if (strpos($game_date, '.') !== false) { list($day, $month, $year) = explode('.', $game_date); $game_date = $month . '/' . $day . '/' . $year; }
вif (strpos($game_date, '-') !== false) { list($day, $month, $year) = explode('-', $game_date); $game_date = $month . '/' . $day . '/' . $year; } else if (strpos($game_date, '.') !== false) { list($day, $month, $year) = explode('.', $game_date); $game_date = $month . '/' . $day . '/' . $year; }
вif (strpos($game_date, '-') !== false) { list($day, $month, $year) = explode('-', $game_date); $game_date = $month . '/' . $day . '/' . $year; } else if (strpos($game_date, '.') !== false) { list($day, $month, $year) = explode('.', $game_date); $game_date = $month . '/' . $day . '/' . $year; }
Вышеупомянутый код будет находиться между инициализацией переменных даты и переменной comb_date_and_time.
Используйте strtotime
вместо date
:
php > $dt = strtotime("03/28/2013 07:05 pm"); php > echo date("Ymd H:i:s", $dt); 2013-03-28 19:05:00
(Кроме того, переменные не разворачиваются в строках с одиночными кавычками, вместо них используются двойные кавычки)