php时间2小时以前,PHP版实现友好的时间显示方式(例如:2小时前)

这篇博客分享了一个PHP类,包含了一系列用于处理日期和时间的实用函数,如格式化月份、时间、日期,计算相对日期,获取下周或上月的日期等。此外,还提供了一个SMARTY模板函数`smarty_function_rdate`来方便模板中显示时间差。
摘要由CSDN通过智能技术生成

完整php类,通常我会配合smary使用,快捷使用 (plugins/function.rdate.php)

1.[代码][PHP]代码

/*

* Data time functions.

// * 模块

*/

defined('TSKY') || die('Permission Denied!');

function fmtMonth($month){

return date('F, Y',day2time($month.'01'));

}

//

function fmt_month($ts) {

return strftime("%b,%Y",$ts);

}

// 03:02

function shartTime($ts) {

return strftime("%H:%M",$ts);

}

// 03:02:01

function longTime($ts) {

return strftime("%T",$ts);

}

//4月18日

function shortDate($ts) {

return date("n月d日",$ts);

}

//2006年4月18日

function longDate($ts) {

return date("Y年n月d日",$ts);

}

function dateTime($ts) {

return date("Y年n月d日 H:i:s",$ts);

}

function fullDateTime($ts) {

return date("Y年n月d日 ",$ts).week($ts);

}

function week($ts) {

global $lang;

return $lang['weekDay'][date('w',$ts)];

}

function relatively_date($date) {

if (!preg_match('/^\d+$/', $date)) $date = strtotime(trim($date));

$sec = time() - $date;

switch(true){

case $sec < 3600:

return round($sec/60). ' 分钟前';

case $sec < 86400:

return round($sec/3600). ' 小时前';

case $sec < (86400 * 7):

return round($sec/86400). ' 天前';//days ago

case $sec < (86400 * 7 * 4):

return round($sec/(86400*7)). ' 周前'; //weeks ago

default:

return longDate($date);

}

}

function nextMonth($month/*200512->200601*/){

return date('Ym',strtotime('+1 month',strtotime($month.'01')));

}

function prevMonth($month/*200512->200511*/){

return date('Ym',strtotime('-1 month',strtotime($month.'01')));

}

function prevDay($day/*20050826*/){

$day = substr($day,0,8);

return date('Ymd',strtotime('-1 day',strtotime($day)));

}

function nextDay($day/*20050826*/){

$day = substr($day,0,8);

return date('Ymd',strtotime('+1 day',strtotime($day)));

}

function nextExistsDay($day/*20050109*/){

$day = nextDay($day);

while(!hasTopic($day) && $day < TODAY){

$day = nextDay($day);

}

return hasTopic($day) ? $day : false;

}

function prevExistsDay($day/*20050109*/){

global $cfg;

$day = prevDay($day);

while(!hasTopic($day) && (int)$day > $cfg->origDate){

$day = prevDay($day);

}

return hasTopic($day) ? $day : false;

}

function prev_day($day){$day = substr($day,0,8);return date('Ymd',strtotime('-1 day',strtotime($day)));}

function long_date($ts){return date("Y年n月d日",$ts);}

function day2time($day){return @strtotime($day);}

/*

echo "

";

echo strftime("a%a\n");// a 星期二

echo strftime("A%A\n");// A 星期二

echo strftime("b%b\n");// b 四月

echo strftime("B%B\n");// B 四月

echo strftime("c%c\n");// c 2006-4-18 3:48:11

echo strftime("C%C\n");// C

echo strftime("d%d\n");// d 18

echo strftime("D%D\n");// D

echo strftime("e%e\n");// e

echo strftime("g%g\n");// g

echo strftime("G%G\n");// G

echo strftime("h%h\n");// h

echo strftime("H%H\n");// H 03

echo strftime("I%I\n");// I 03

echo strftime("j%j\n");// j 108

echo strftime("m%m\n");// m 04

echo strftime("M%M\n");// M 48

echo strftime("n%n\n");// n

echo strftime("p%p\n");// p 上午

echo strftime("r%r\n");// r

echo strftime("R%R\n");// R

echo strftime("S%S\n");// S 11

echo strftime("t%t\n");// t

echo strftime("T%T\n");// T

echo strftime("u%u\n");// u

echo strftime("U%U\n");// U 16

echo strftime("V%V\n");// V

echo strftime("W%W\n");// W 16

echo strftime("w%w\n");// w 2

echo strftime("x%x\n");// x 2006-4-18

echo strftime("X%X\n");// X 3:48:11

echo strftime("y%y\n");// y 06

echo strftime("Y%Y\n");// Y 2006

echo strftime("Z%Z\n");// Z 中国标准时间

echo strftime("%%%\n");// %

*/

2.[代码][PHP]代码

function smarty_function_rdate($params, &$smarty){

if (!isset($params['T'])){

$smarty->trigger_error("rdate: missing 'T' parameter");

return;

}

$date = $params['T'];

if (!preg_match('/^\d+$/', $date)) $date = strtotime(trim($date));

$sec = time() - $date;

switch(true){

case $sec < 3600:

return round($sec/60). ' 分钟前';

case $sec < 86400:

return round($sec/3600). ' 小时前';

case $sec < (86400 * 7):

return round($sec/86400). ' 天前';//days ago

case $sec < (86400 * 7 * 4):

return round($sec/(86400*7)). ' 周前'; //weeks ago

default:

return date("Y年n月d日",$date);

}

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值