php 时间戳转换成固定格式的日期定制版
不管是做 app 接口,还是网站接口,经常需要这样的功能:把数据库里存放的时间戳改成需要的固定格式的日期。
比如说当天的时间戳显示多少小时或者多少分钟之前,比较像微信朋友消息下面的时间戳。超过发布时间过了一天展示成月、日,过了一年只展示年份或者展示年月日。
话不多说,直接上自己写的一个助手函数:
/**
* 时间转日期特别定制版
*/
function timetodates($time, $type = 6, $simple = false) {
global $DT_TIME;
if(!$time) $time = $GLOBALS['DT_TIME'];
if ($simple) {
$types = array('Y-m-d', 'Y', 'm-d', 'Y/m/d', 'm/d H:i', 'Y-m-d H:i', 'Y-m-d H:i:s');
} else {
$types = array('Y年m月d日', 'Y年', 'm月d日', 'Y年m月d日', 'm月d日 H时i分', 'Y年m月d日 H时i分', 'Y年m月d日 H时i分s秒');
}
$type = isset($types[$type]) ? $types[$type] : $types[3];
$date = '';
$timediff = $DT_TIME - $time;
if($timediff > 0 && $timediff < (24*3600)) {
$hours = intval($timediff / 3600);
$minutes = 0;
if($hours == 0){
$minutes = intval($timediff / 60);
}
return $hours ? $hours.'小时前' : $minutes.'分钟前';
} elseif ($timediff > (365*12*24*3600) || date('Y', $DT_TIME) !== date('Y', $time)) {
$type = $types[3];
}
elseif($time > 2147212800) {
if(class_exists('DateTime')) {
$D = new DateTime('@'.($time - 3600 * intval(str_replace('Etc/GMT', '', $GLOBALS['CFG']['timezone']))));
$date = $D->format($type);
}
}
return $date ? $date : date($type, $time);
}
第一个参数为时间戳,第二个指定固定的展示格式,第三个参数指定选择展示中文年月日还是通用版日期格式。