首页| 版块| 我的| 发帖| 消息
主题:关于原创达人勋章的研究修改及勋章自动回收任务
zhangjingyu 
本来想在哈罗cq论坛发帖问问关于上面这两个函数显示时间有问题的原因,可想想又算了,也不一定有准确的回答。自己百度看看吧,看能不能找到答案。于是,在网上看,最后找到这样一条:
“php 时间问题 date() getdate() time() 时间误差
php时间问题date()getdate()time()实际当前时间是2012/1/422:25echodate("Y-m-dh:i:s");结果是2012-01-04-10:01:52(与实际时间偏差近12小时)但是$arr=getdate(time())echo$arr['y'].$...展开
PHP默认时区设置是会导致时间误差的,你在运行这些函数之前,先调用一个函数即可: date_default_timezone_set('Etc/GMT-8'); 这个时区误差只是在时间上的误差,日期误差一般不大,所以你输出的年,月,日都是相同的。”(引用内容)看到最后,说年月日都是相同的,怎么我这里就不一样啊。

再回头看我写的代码,“$lasttime = date('Y-m-d',$behavior['lastday']);”忽然想到输出:这样的格式只输出年月日。修改下,改为“$lasttime = date('Y-m-d H:i:s',$behavior['lastday']);”这样就能输出具体的时间了。保存文件,刷新勋章中心页面显示为“2021-09-12 16:00:00”,怎么是前一天的16点呢?

再看get_date()函数的“$lasttime = get_date($behavior['lastday'],'Y-m-d H:i:s');”显示为“2021-09-13 00:00:00”,这才是正确的时间。那跟date()函数怎么差8个小时呢?想想,应该可能就是时区问题吧,只是我感觉不应该啊。

既然时间已经能正确显示,并且也大概知道了原因。只是,经过测试,我并不想显示最后发表主题的日期了,显示过去几天了更好些。修改代码后,显示如:“恭喜获得原创达人勋章(距离上次发主题已过去5天,到昨天剩余:27)”,我觉得这样不错。

“$nowhave = ($pastday > 0)? '(距离上次发主题已过去'.$pastday.'天,到昨天剩余:'.$shengyu.')' : '(今天已发主题,连续主题天数:'.$num.')';”(引用内容)这是最后的修改代码,里面加了两个样式,以区分今天发和没发主题。
zhangjingyu回帖于2021-09-18 21:04[查看电脑版]
下一楼»:基本就是上面的这样了。说点儿其它的吧。

lib/user/behaviorservice.class.php
/* ..
«上一楼:使用上面的date()函数显示9月12日,但使用get_date()函数却能正确显示为9月13日。而上面明明使用 ..

查看全部回帖(49)
«返回主帖