如何在PHP中获取从日期算起的小时数&;Cakephp?

如何在PHP中获取从日期算起的小时数&;Cakephp?,php,datetime,Php,Datetime,我想通过使用PHP&Cakephp函数只从日期算起几个小时 $date = "2011-07-26 20:05:00"; $hours = ? 使用类(PHP5.3或更高版本) 我假设你的意思是,如果时间是晚上8点或20:00,就像在你的时间串中一样,那么 $date = "2011-07-26 20:05:00"; $date = strtotime($date); echo date('H', $date); 我不太熟悉PHP的日期格式,因此您必须参考PHP.net以获得正确的格式字符

我想通过使用PHP&Cakephp函数只从日期算起几个小时

$date = "2011-07-26 20:05:00";

$hours = ?
使用类(PHP5.3或更高版本)


我假设你的意思是,如果时间是晚上8点或20:00,就像在你的时间串中一样,那么

$date = "2011-07-26 20:05:00";
$date = strtotime($date);
echo date('H', $date);

我不太熟悉PHP的日期格式,因此您必须参考PHP.net以获得正确的格式字符。

在PHP端,您使用
date('H',strotime($date))

在mysql端,您可以使用
DATE\u FORMATE(NOW(),'%H')
只获取小时数

$date
包含类似“2014/08/14”格式的日期

要将日期(如2014年8月14日)转换为2014年8月14日,您必须使用

date('d-m-Y',strtotime($date));
或使用

date('d-m-Y',strtotime(str_replace('/','-',$date)))
使用类的最佳方式


对于24小时和12小时格式,请检查以下代码:

    $date = "2011-07-26 20:05:00";
    echo $hours = date('G', strtotime($date)); // In 24-hour format of an hour without leading zeros
    echo '<br>';
    echo $hours = date('g', strtotime($date)); // 12-hour format of an hour without leading zeros
    // For current timestamp
    echo $hours = date('G'); // In 24-hour format of an hour without leading zeros
    echo '<br>';
    echo $hours = date('g'); //12-hour format of an hour without leading zeros
$date=“2011-07-26 20:05:00”;
echo$hours=date('G',strottime($date));//24小时格式,即不带前导零的一小时
回声“
”; echo$hours=date('g',strottime($date));//不带前导零的12小时格式 //对于当前时间戳 echo$hours=日期('G');//24小时格式,即不带前导零的一小时 回声“
”; echo$hours=日期('g')//不带前导零的12小时格式

参考请检查:

$pattern='[0-9]{2}:[0-9]{2}';
预赛(“/”.$pattern.“/”,“2011-07-26 20:05:00”,$matches);

echo$匹配项[0]

您需要在$date上使用strotime()使其成为unix时间戳,然后才能工作…由于日期格式的原因,第一个版本实际上返回了一个错误,因此请使用strotime将日期重新格式化为unix时间戳。下面Clement的答案应该是新的公认答案。2017年,使用DateTime类将是最可靠的方法。strotime有时会产生奇怪的结果,而您正在放弃控制,因为DateTime::createFromFormat更可靠/一致/可预测。但这是个问题吗?请解释一下。谢谢
$my_sql_date = "2011-07-26 20:05:00";
$date_time_obj = new DateTime($my_sql_date);
echo $date_time_obj->format('H');
    $date = "2011-07-26 20:05:00";
    echo $hours = date('G', strtotime($date)); // In 24-hour format of an hour without leading zeros
    echo '<br>';
    echo $hours = date('g', strtotime($date)); // 12-hour format of an hour without leading zeros
    // For current timestamp
    echo $hours = date('G'); // In 24-hour format of an hour without leading zeros
    echo '<br>';
    echo $hours = date('g'); //12-hour format of an hour without leading zeros