完整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);
}
}
?>