游戏中,常见时间处理函数
来源:互联网 发布:淘宝企业店铺复核吗 编辑:程序博客网 时间:2024/06/06 16:25
在游戏聊天,消息等模块中,我们需要记录消息距离当前时间已经过了多久。就类似于微信中,消息的记录时间可能是这样 :12月25号,那就说明这条消息是12月25号产生的。
需求是这样的:记录消息产生的时间距离当前时间
不超过一分钟的时候,显示过了XX秒
不超过一个小时的时候,显示过了几分钟
不超过一天的时候,显示为XX:XX
超过一天的时候,显示 几月几号
如何判断发信息时间,距离当前时间已经超过了一天,需要记录如下几个数据
从今天凌晨,到现在,已经过了多久,记录为时间戳 $beginToNow
发信息时间,距离当前时间,已经过了多久,记录为时间戳 $val
如果 $beginToNow 大于 $val 即没有超过一天。
详细代码如下:
/** * 获取时间 * 全站时间显示规则 * 1.在1小时内的时间,按分钟进行显示(9分钟前) * 2.在1天内的时间,按文字加时间显示(今天 05:12) * 3.在1天以外的时间,按日期加时间显示(9月7日 13:46) * * @param int $time * @return string 处理后的时间 */ public static function getTime($time) { $nowTime = time(); $todayBeginTime = strtotime('today'); $beginToNow = $nowTime - $todayBeginTime; $val = max($nowTime - $time, 1); if ($val < 60) { return __('{n}秒前', array('n' => $val)); } elseif ($val >= 60 && $val < (60 * 60)) { return __('{n}分钟前', array('n' => intval($val / 60))); } elseif ($val >= (60 * 60) && $val < (60 * 60 *24) && $beginToNow > $val) { return date(_('今天') . ' H:i ', $time); } else { return date(_('m月d日') . ' H:i ', $time); } }
页面显示,为了保证时间是变动显示的,所以常规做法,每次请求页面的时候,都需要把计算好的时间重新分配到页面中。可能代码如下:
$this->assign('time' getTime($time));
这样做,就必须保证程序分配变量到页面。还有一个做法,就是直接在页面中请求服务器的数据,这样,不需要在程序中分配数据。
<span><?=Helper_Time::getTime(strtotime($value['start_time']))?></span>
/** * 将秒级时间转化为x小时x分x秒的中文格式 * * @param int $time * @return string 处理后的时间 */ public static function getChineseTime($time) { // 获取小时数 $hour = floor($time / 3600); $min = floor(($time - $hour * 3600) / 60); $second = ceil($time - $hour * 3600 - $min * 60); if ($second == 60) { $second = 59; } $cTime = ''; // 小时数大于0 if ($hour > 0) { $cTime = $hour . '小时'; } // 如果分和秒都是0,则表示为整数小时,返回 xx小时整 if ($min == 0 && $second == 0) { $cTime = $cTime . '整'; return $cTime; } // 如果分钟数大于0 if ($min > 0) { // 如果分钟数小于10,且有小时数在前面,则在前面补“零” if ($min < 10 && $hour > 0) { $cTime = $cTime . '零'; } $cTime = $cTime . $min . '分'; } // 如果秒数为0,则返回 xx小时(零)xx分 if ($second == 0) { return $cTime; } // 如果是x小时0分钟x秒 if ($hour > 0 && $min == 0) { $cTime = $cTime . '零'; } $cTime = $cTime . $second . '秒'; return $cTime; }
- 游戏中,常见时间处理函数
- pandas常见的时间处理函数
- 接口中常见的时间处理方法
- Java中常见的时间处理
- SQL中常见的时间函数
- python中常见的字符串处理函数
- MySQL中常见的字符串处理函数
- 常见时间处理问题
- 常见字符串时间处理
- SQL中时间处理 DATEADD函数
- SQL中时间处理 DATEADD函数
- C/C++中时间处理函数
- r语言中时间函数处理
- mysql 常见处理函数
- 夏令时 游戏时间逻辑处理
- C语言标准库中常见字符串处理函数
- C语言中常见的字符串处理函数
- python中os模块的常见处理函数
- jquery基础1-jquery和dom对象转换
- Hadoop-HDFS 对性能造成重大影响的神秘杀手-Shell.
- android连接公司sqlserver2008数据库服务器
- C++运算符的优先级
- freemarker生成静态页面
- 游戏中,常见时间处理函数
- HttpWatch工具简介及使用技巧(转载)
- C++《如何发布MFC项目的release版本》
- 40 个很有用的 Mac OS X Shell 脚本和终端命令
- base64转换成图片,并打ZIP包
- Intel GMA DVM SVM SSM In XP Vista Win7
- 把matlab的figure窗口合并到主窗口中
- 委托与事件
- hdu1281 二分匹配