Lấy thời gian hiện tại và định dạng
Đây là 1 hàm cơ bản trong PHP, không chứa tham số và trả về thời gian hiện tại.
function nowTime(){
return date('d/m/Y', time());
}
Định dạng ngày tháng
Đây là cách đơn giản nhất để chuyển ngày tháng từ định dạng này (yyyy/mm/dd) sang định dạng khác (dd/mm/yyyy). Để chi tiết và rõ ràng hơn, bạn có thể tham khảo class DateTime để phân tích và định dạng.
$originalDate = "2020-06-03";
$newDate = date("d-m-Y", strtotime($originalDate));
Nguồn: Stack Overflow
Lấy số tuần từ ngày tháng
Trong lúc viết code php, đôi lúc bạn sẽ cần lấy số tuần của một ngày cụ thể. Hàm dưới đây sẽ giúp bạn lấy được số tuần bằng cách truyền ngày bạn muốn lấy dưới dạng tham số và sau đó nó sẽ trả về cho bạn số tuần.
function getWeekNumber($ddate){
$date = new DateTime($ddate);
return $date->format("W");
}
Chuyển đổi phút sang giờ và phút
Đây là một hàm php hữu ích để hiển thị thời gian: Truyền vào nó số phút dưới dạng số nguyên (giả sử là 135) và hàm sẽ trả về 02:15.
function convertToHoursMins($time, $format = '%02d:%02d') {
if ($time < 1) {
return;
}
$hours = floor($time / 60);
$minutes = ($time % 60);
return sprintf($format, $hours, $minutes);
}
Lấy khoảng thời gian giữa 2 ngày
Hàm này sẽ lấy ra khoảng thời gian giữa 2 ngày được truyền vào 2 tham số $date1 và $date2
function dateDiff($date1, $date2){
$datetime1 = new DateTime($date1);
$datetime2 = new DateTime($date2);
$interval = $datetime1->diff($datetime2);
return $interval->format('%H:%I');
}
Kiểm tra ngày được chỉ định là quá khứ hay tương lai
if(strtotime(dateString) > time()) {
# date is in the future
}
if(strtotime(dateString) < time()) {
# date is in the past
}
if(strtotime(dateString) == time()) {
# date is right now
}
Nguồn: Art of Web
Tính tuổi
Hàm này sẽ lấy ngày truyền vào tham số và trả về tuổi. Rất hữu ích nếu bạn cần kiểm tra độ tuổi nhất định để tạo tài khoản.
function age($date){
$time = strtotime($date);
if($time === false){
return '';
}
$year_diff = '';
$date = date('Y-m-d', $time);
list($year,$month,$day) = explode('-',$date);
$year_diff = date('Y') - $year;
$month_diff = date('m') - $month;
$day_diff = date('d') - $day;
if ($day_diff < 0 || $month_diff < 0) $year_diff-;
return $year_diff;
}
Nguồn: AP PHP
Hiển thị danh sách các ngày giữa 2 ngày
Một ví dụ về cách hiển thị danh sách ngày giữa hai ngày, sử dụng class DateTime() và DatePeriod().
// Mandatory to set the default timezone to work with DateTime functions
date_default_timezone_set('America/Sao_Paulo');
$start_date = new DateTime('2010-10-01');
$end_date = new DateTime('2010-10-05');
$period = new DatePeriod(
$start_date, // 1st PARAM: start date
new DateInterval('P1D'), // 2nd PARAM: interval (1 day interval in this case)
$end_date, // 3rd PARAM: end date
DatePeriod::EXCLUDE_START_DATE // 4th PARAM (optional): self-explanatory
);
foreach($period as $date) {
echo $date->format('Y-m-d').'<br/>'; // Display the dates in yyyy-mm-dd format
}
Nguồn: Snipplr
Hiển thị thời gian dưới dạng “time ago”
Hàm này sẽ giúp bạn hiển thị thời gian đẹp mắt hơn như là “1 giờ trước” (1 hour ago) hay “2 ngày trước” (2 days ago) giống các mạng xã hội hiện nay đang sử dụng.
function ago($tm,$rcs = 0) {
$cur_tm = time(); $dif = $cur_tm-$tm;
$pds = array('second','minute','hour','day','week','month','year','decade');
$lngh = array(1,60,3600,86400,604800,2630880,31570560,315705600);
for($v = sizeof($lngh)-1; ($v >= 0)&&(($no = $dif/$lngh[$v])<=1); $v--); if($v < 0) $v = 0; $_tm = $cur_tm-($dif%$lngh[$v]);
$no = floor($no); if($no <> 1) $pds[$v] .='s'; $x=sprintf("%d %s ",$no,$pds[$v]);
if(($rcs == 1)&&($v >= 1)&&(($cur_tm-$_tm) > 0)) $x .= time_ago($_tm);
return $x;
}
Nguồn: CSS Tricks
Đếm ngược đến 1 ngày nào đó
Hàm php này sẽ lấy ngày được định sẵn và cho biết còn lại bao nhiêu ngày và giờ cho đến ngày này.
$dt_end = new DateTime('December 3, 2016 2:00 PM');
$remain = $dt_end->diff(new DateTime());
echo $remain->d . ' days and ' . $remain->h . ' hours';
Nguồn: Stack Overflow
Dịch từ CatsWhoCode