$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
}
我该如何突破这一小时,以分钟为单位显示,最后一次声明。
答案 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
。
如果$timeframe
是0.5
,那将是半小时。 60min * 0.5 = 30 minutes
。
如果$timeframe
是0.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