2024国产成人精品免费视频|日本免费一区二区三区毛片|久久97超碰色中文字幕|亚洲天堂a中文字幕

長(zhǎng)沙論壇制作:對(duì)Discuz時(shí)間處理函數(shù)dgmdate()的簡(jiǎn)單說(shuō)明

2015-01-15 14:58 欄目:技術(shù)開(kāi)發(fā) 查看(29667)

使用過(guò)Discuz的朋友都會(huì)知道dz的時(shí)間顯示出來(lái)不都是標(biāo)準(zhǔn)時(shí)間,比如我們發(fā)一篇帖子,里面的時(shí)間可能包含了多少秒前、多少分鐘前、幾個(gè)小時(shí)前、幾天前等等。那么是為什么會(huì)這樣顯示,而不是直接顯示標(biāo)準(zhǔn)的具體的時(shí)間呢,那就是因?yàn)閐z在內(nèi)部增加了一個(gè)時(shí)間處理方法dgmdate().

至于在這里了解這個(gè)方法有什么用?我認(rèn)為不管是做Discuz開(kāi)發(fā)的,還是使用DZ的網(wǎng)站運(yùn)營(yíng)人員都有用處。對(duì)于開(kāi)發(fā)者而言如果需要實(shí)現(xiàn)跟DZ本身模塊相同的時(shí)間顯示風(fēng)格,我們不需要自己想半天來(lái)寫(xiě)一個(gè)這樣的方法,而直接調(diào)用即可。對(duì)于運(yùn)營(yíng)者來(lái)說(shuō)我們可以了解這個(gè)時(shí)間到底是被怎么樣處理的。好了首先我們就貼出那個(gè)函數(shù)的全部代碼吧:

function dgmdate($timestamp, $format = 'dt', $timeoffset = '9999', $uformat = '') {
global $_G;
$format == 'u' && !$_G['setting']['dateconvert'] && $format = 'dt';
static $dformat, $tformat, $dtformat, $offset, $lang;
if($dformat === null) {
$dformat = getglobal('setting/dateformat');
$tformat = getglobal('setting/timeformat');
$dtformat = $dformat.' '.$tformat;
$offset = getglobal('member/timeoffset');
$sysoffset = getglobal('setting/timeoffset');
$offset = $offset == 9999 ? ($sysoffset ? $sysoffset : 0) : $offset;
$lang = lang('core', 'date');
}
$timeoffset = $timeoffset == 9999 ? $offset : $timeoffset;
$timestamp += $timeoffset * 3600;
$format = empty($format) || $format == 'dt' ? $dtformat : ($format == 'd' ? $dformat : ($format == 't' ? $tformat : $format));
if($format == 'u') {
$todaytimestamp = TIMESTAMP - (TIMESTAMP + $timeoffset * 3600) % 86400 + $timeoffset * 3600;
$s = gmdate(!$uformat ? $dtformat : $uformat, $timestamp);
$time = TIMESTAMP + $timeoffset * 3600 - $timestamp;
if($timestamp >= $todaytimestamp) {
if($time > 3600) {
$return = intval($time / 3600).' '.$lang['hour'].$lang['before'];
} elseif($time > 1800) {
$return = $lang['half'].$lang['hour'].$lang['before'];
} elseif($time > 60) {
$return = intval($time / 60).' '.$lang['min'].$lang['before'];
} elseif($time > 0) {
$return = $time.' '.$lang['sec'].$lang['before'];
} elseif($time == 0) {
$return = $lang['now'];
} else {
$return = $s;
}
if($time >=0 && !defined('IN_MOBILE')) {
$return = '<span title="'.$s.'">'.$return.'</span>';
}
} elseif(($days = intval(($todaytimestamp - $timestamp) / 86400)) >= 0 && $days < 7) {
if($days == 0) {
$return = $lang['yday'].'&nbsp;'.gmdate($tformat, $timestamp);
} elseif($days == 1) {
$return = $lang['byday'].'&nbsp;'.gmdate($tformat, $timestamp);
} else {
$return = ($days + 1).'&nbsp;'.$lang['day'].$lang['before'];
}
if(!defined('IN_MOBILE')) {
$return = '<span title="'.$s.'">'.$return.'</span>';
}
} else {
$return = $s;
}
return $return;
} else {
return gmdate($format, $timestamp);
}
}

前面的今天在這里就不去看,主要看中間的IF判斷。從中我們可以看得出,這里的判斷主要分兩種大的情況,然后再來(lái)依次來(lái)分小的情況來(lái)處理。

如果被保存的時(shí)間是大于今天零點(diǎn)(也就是今天的00:00以后被保存的),就是第一種情況。這個(gè)時(shí)候再次進(jìn)行判斷,如果時(shí)間差(當(dāng)前時(shí)間-被保存的時(shí)間)大于3600s就以這個(gè)時(shí)間除以3600取整為多少小時(shí)前;如果是大于1800小于等于3600就是顯示半小時(shí)前;如果是是大于60小于等于1800就進(jìn)行除以60再取整,得到的數(shù),久違多少分鐘前,如果是大于0小于等于60就直接顯示多少秒前。如果等于0,就顯示剛剛。除此之外就顯示原始時(shí)間。

如果被保存時(shí)間是今天以前。那么就以今天零點(diǎn)那個(gè)時(shí)間減去被保存的時(shí)間,然后再用這個(gè)時(shí)間去除以24*3600,得到結(jié)果后取整,如果小于7.就再次進(jìn)行判斷,如果這個(gè)值為0,就顯示昨天,如果這個(gè)值為1,就顯示前天(比如說(shuō)昨天中午12點(diǎn)的帖子就是顯示昨天),否則及顯示幾天前。如果這個(gè)時(shí)間大于等于七天,就顯示具體的時(shí)間。

與我們的項(xiàng)目經(jīng)理聯(lián)系
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流

轉(zhuǎn)載請(qǐng)注明出處:長(zhǎng)沙論壇制作:對(duì)Discuz時(shí)間處理函數(shù)dgmdate()的簡(jiǎn)單說(shuō)明 - 微構(gòu)網(wǎng)絡(luò)
分享:
標(biāo)簽:
永川市| 扶沟县| 凌海市| 桐柏县| 阜新| 涡阳县| 萝北县| 新竹市| 两当县| 隆化县| 安泽县| 策勒县| 共和县| 吴旗县| 昌图县| 绥中县| 嘉定区| 临安市| 高邑县| 区。| 正镶白旗| 招远市| 武山县| 阿尔山市| 余庆县| 汉寿县| 张家口市| 太仆寺旗| 县级市| 上思县| 大渡口区| 龙陵县| 南溪县| 同江市| 中江县| 运城市| 东海县| 武穴市| 桐乡市| 安徽省| 信丰县|