So sánh thời gian hiện tại với thời gian bài viết bằng PHP

28/07/2012

time-ago
Chắc hẳn khi bạn lướt web sẽ thấy xuất hiện bên cạnh tiêu đề bài viết hoặc comment thường có thời gian hiển thị bên cạnh như : ” Cách đây 1 ngày “, ” Cách đây 3 ngày “,” Cách đây 2 tháng “
Hôm nay mình xin chia sẻ với các bạn một hàm php giúp bạn làm được điều trên. Các bạn chỉ việc tạo 1 file tên là timeago.php và  copy đoạn code sau và sử dụng bất cứ khi nào bạn cần :

<?php
function time_stamp($time_ago)
{
$cur_time=time();
$time_elapsed = $cur_time - $time_ago;
$seconds = $time_elapsed ;
$minutes = round($time_elapsed / 60 );
$hours = round($time_elapsed / 3600);
$days = round($time_elapsed / 86400 );
$weeks = round($time_elapsed / 604800);
$months = round($time_elapsed / 2600640 );
$years = round($time_elapsed / 31207680 );
// Seconds
if($seconds <= 60)
{
echo " Cách đây $seconds giây ";
}
//Minutes
else if($minutes <=60)
{
if($minutes==1)
{
echo " Cách đây 1 phút ";
}
else
{
echo " Cách đây $minutes phút";
}
}
//Hours
else if($hours <=24)
{
if($hours==1)
{
echo "Cách đây 1 tiếng ";
}
else
{
echo " Cách đây  $hours tiếng ";
}
}
//Days
else if($days <= 7)
{
if($days==1)
{
echo " Ngày hôm qua ";
}
else
{
echo " Cách đây  $days ngày ";
}
}
//Weeks
else if($weeks <= 4.3)
{
if($weeks==1)
{
echo " Cách đây 1 tuần ";
}
else
{
echo " Cách đây  $weeks tuần";
}
}
//Months
else if($months <=12)
{
if($months==1)
{
echo " Cách đây 1 tháng ";
}
else
{
echo " Cách đây $months tháng";
}
}
//Years
else
{
if($years==1)
{
echo " Cách đây 1 năm ";
}
else
{
echo " Cách đây $years năm ";
}
}
}
?>

Để dễ hiểu mình xin làm 1 ví dụ minh họa về cách sử dụng hàm này :

<?
include 'timeago.php';
$time="2012-07-05 15:47:01";
$time_ago =strtotime($time);
echo time_stamp($time_ago);
?>

Hy vọng đoạn hàm trên sẽ giúp ích cho các bạn. Chúc các bạn thành công !

Chuyên Mục:

Bài viết được đăng bởi webmaster

Nếu các bạn thấy bài viết hữu ích thì giúp mình Like cái nhé !
  • hungsama

    Cảm ơn, bài viết hữu ích !

  • Julie Lee

    Trước tiên cảm ơn bạn đã share code nhé.
    Không biết bạn thử trường hợp giờ chưa nhỉ? Mình có test vài trường hợp và code chạy không đúng lắm. Xin trình bày ở đây, hy vọng chủ thớt đọc được và reply giúp mình.
    Bây giờ là 10h17′ PM ngày 04/12/2014.
    TH1: Mình test $time=”2014-11-27 22:12:00″. Kết quả trả ra là “Cách đây 7 ngày”. Vậy tại sao không phải là “Cách đây 1 tuần” ?
    TH2: Mình test $time=”2014-12-04 20:00:00″ Kết quả trả ra là “Cách đây -16943 giây” (?!)
    TH3: Mình test $time=”2014-12-04 08:00:00″ Kết quả trả ra là “Cách đây 7 tiếng” (?!)
    Mong thớt xem lại phần giờ và hồi âm. Cảm ơn ^^!