使用过Discuz的朋友都会知道dz的时间显示出来不都是标准时间,比如我们发一篇帖子,里面的时间可能包含了多少秒前、多少分钟前、几个小时前、几天前等等。那么是为什么会这样显示,而不是直接显示标准的具体的时间呢,那就是因为dz在内部增加了一个时间处理方法dgmdate().
至于在这里了解这个方法有什么用?我认为不管是做Discuz开发的,还是使用DZ的网站运营人员都有用处。对于开发者而言如果需要实现跟DZ本身模块相同的时间显示风格,我们不需要自己想半天来写一个这样的方法,而直接调用即可。对于运营者来说我们可以了解这个时间到底是被怎么样处理的。好了首先我们就贴出那个函数的全部代码吧:
- 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
历史资源提醒--必看
该页面资源/教程来自原魔趣吧历史资源转移,因发布历史久远,部分资源/教程可能已失效或无法在最新版程序中安装使用!DZ资源建议在Discuz3.4及以下版本使用,PHP版本建议5.6。资源仅提供做代码研究学习使用!
因改版,部分贴内链接将无法正常跳转,如链接失效或未正常跳转,请利用站内搜索功能搜索资源名称获取对应资源!