如何将以下小时数转换为分钟数?

时间:2018-10-23 15:12:11

标签: php

$time_frame = floor(abs((strtotime($notification['note_date'])-strtotime(date("Y-m-d H:i:s")))/60/60));       

if($time_frame>24){
    $time_frame = floor($time_frame/24);
    if($time_frame>1){
        $time_frame = $time_frame." days ago";
    } else{
        $time_frame = $time_frame." day ago";
    }
} else if($time_frame>1) {
    $time_frame = $time_frame." hours ago";
} else if($time_frame==1) {
    $time_frame = $time_frame." hour ago";
} else{
    $time_frame = "1 hour ago"; //I want to break this hour in to minutes
} 

我该如何突破这一小时,以分钟为单位显示,最后一次声明。

3 个答案:

答案 0 :(得分:2)

我建议改为处理秒/时间戳或日期时间对象-我认为这将是一种更好,更动态的方法。也许可以看看这个问题,Converting timestamp to time ago in PHP e.g 1 day ago, 2 days ago...

也就是说,如果您要使用当前的方法,可以将变量乘以60(因为一小时有60分钟),例如

$time_frame  = 60*$timeframe;

示例,
如果$timeframe为1,则您正好有一个小时。 60min * 1 = 60 minutes
如果$timeframe0.5,那将是半小时。 60min * 0.5 = 30 minutes
如果$timeframe0.25,则表示已过去15分钟,并且60min * 0.25 = 15 minutes

您可能想根据自己的喜好舍入该数字,以免得到诸如1.43 minutes left之类的输出。另请注意,浮点数可能并不完全准确,因此我建议使用datetime对象或时间戳。

答案 1 :(得分:2)

如果使用DateTime类,则可以使用diff()方法,这样就不必弄乱所有计算了。 diff()返回一个DateInterval,它具有可用于确定适当消息的公共属性。

$interval = date_create($notification['note_date'])->diff(new DateTime);

if ($interval->days > 1) {
    $time_frame = "{$interval->days} days";
} elseif ($interval->days == 1) {
    $time_frame = "1 day";
} elseif ($interval->h > 1) {
    $time_frame = "{$interval->h} hours";
} elseif ($interval->h == 1) {
    $time_frame = "1 hour";
} elseif ($interval->i > 1) {
    $time_frame = "{$interval->i} minutes";
} elseif ($interval->i == 1) {
    $time_frame = "1 minute";
} else {
    $time_frame = "Less than 1 minute";
}

echo "{$time_frame} ago";

答案 2 :(得分:0)

您实际上可以使用该字符串! :-D

$x = new DateTime('1 hour ago'); // done at 17:17
echo $x->format('Y-m-d H:i:s');  // outputs 2018-10-23 16:17:12

https://3v4l.org/jWTC8