为日期和时间取两个变量并组合起来制作一个日期

时间:2013-03-28 21:42:48

标签: php pdo

我想要两个变量,一个代表日期,另一个代表时间,然后将它们组合起来制作一个日期。

然后我想使用合并的日期和时间来检查当前日期和时间是否与合并日期和时间相差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 pm

在输出时,$ combined_date_and_time读作:

$2pm03America/Los_Angeles_28pm31America/Los_Angeles $2pm03America/Los_Angeles_313803America/Los_Angeles

当然不对。

是否可以将两者合并为一个日期然后进行比较?

2 个答案:

答案 0 :(得分:4)

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

上面的代码介于日期变量的初始化和combined_date_and_time变量之间。

答案 1 :(得分:0)

使用strtotime代替date

php > $dt = strtotime("03/28/2013 07:05 pm");
php > echo date("Y-m-d H:i:s", $dt);
2013-03-28 19:05:00

(另外,变量不会在单引号'字符串中展开,而是使用双引号"字符串)