前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >php中时间戳等相关小概念笔记

php中时间戳等相关小概念笔记

作者头像
仇诺伊
发布2018-09-12 14:27:47
发布2018-09-12 14:27:47
1.4K00
代码可运行
举报
文章被收录于专栏:佳爷的后花媛佳爷的后花媛
运行总次数:0
代码可运行

首先说下时间戳吧,因为工作需要,对接接口时要用到各种类型的时间戳,所以抽个时间把这些时间戳整理了下. 如果想看看返回的时间戳对不对,这里有个在线转换工具,可以试试时间戳在线转换

获取当前的时间戳是最简单的

格式如下: $test = time(); 它返回当前的 Unix 时间戳.这是返回的结果1487839316

获取当前日期下的零时零点零分的时间戳

格式如下: $tmp1 = date("Y-m-d H:i:s", mktime(0, 0, 0, date("m"), date('d'), date("Y"))); 这个获取的是当前日期下的零时零点零分的时间.打印如下结果:2017-02-23 00:00:00 但是这里直接使用strtotime获取的并不是这个时间,他实际返回的是2017-02-23 07:00:00.这个结果和mktime(0, 0, 0, date("m"), date('d'), date("Y"))是一样的. 如果想要得到当前日期下的零时零点零分的时间戳,需要这样

代码语言:javascript
代码运行次数:0
运行
复制
$tmp = mktime(0, 0, 0, date("m"), date('d'), date("Y"));
$tmp1 = date("Y-m-d H:i:s", mktime(0, 0, 0, date("m"), date('d'), date("Y")));//显示
$tmp2 = strtotime($tmp1)-25200;
$tmp3 = $tmp - 25200;//等价于$tmp2
print_r($tmp3);
获取前一天(后一天)的零时零点零分的时间戳

这个就是对上面的mktime里面的参数进行修改 类似这样$day = date('d') + 1; 顺便说下mktime(时,分,秒,月,日,年),它是取得一个日期的 Unix 时间戳.

获取身份证中出生日期的时间戳

首先说下如何从身份证中获取出生日期,当然,在这之前,要知道身份证有15位的和18位的,所以如果是15位的要转换成18位的,方便计算. 代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
public function getIDCard($idCard) {
        // 若是15位,则转换成18位;否则直接返回ID
        if (15 == strlen ( $idCard )) {
            $W = array (7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1 );
            $A = array ("1","0","X","9","8","7","6","5","4","3","2" );
            $s = 0;
            $idCard18 = substr ( $idCard, 0, 6 ) . "19" . substr ( $idCard, 6 );
            $idCard18_len = strlen ( $idCard18 );
            for($i = 0; $i < $idCard18_len; $i ++) {
                $s = $s + substr ( $idCard18, $i, 1 ) * $W [$i];
            }
            $idCard18 .= $A [$s % 11];
           // print_r($idCard18);exit();
            return $idCard18;
        } else {
            return $idCard;
        }
    }

然后提取出生日期:

代码语言:javascript
代码运行次数:0
运行
复制
 public function getAgeByID($id)
    {
        $length = strlen($id);
        if(empty($id)){
            return "";
        }
            if ($length == 18){
                $date = strtotime(substr($id, 6, 8));
                print_r($date);exit();
                return $date;
            }elseif($length == 15){
                $id = $this->getIDCard($id);
                $date = strtotime(substr($id, 6, 8));
                return $date;
            }
        }

后面就可以直接使用这个函数了.

json_encode编码有乱码怎么办

json_encode($arr, JSON_UNESCAPED_UNICODE)

返回结果处理成数组
代码语言:javascript
代码运行次数:0
运行
复制
 /*
  * 返回参数处理,对象转化为数组
  */
    public function object_array($obj) {
        $_arr = is_object ( $obj ) ? get_object_vars ( $obj ) : $obj;
        foreach ( $_arr as $key => $val ) {
            $val = (is_array ( $val ) || is_object ( $val )) ? $this->object_array ( $val ) : $val;
            $arr [$key] = $val;
        }
        return $arr;
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.02.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取当前的时间戳是最简单的
  • 获取当前日期下的零时零点零分的时间戳
  • 获取前一天(后一天)的零时零点零分的时间戳
  • 获取身份证中出生日期的时间戳
  • json_encode编码有乱码怎么办
  • 返回结果处理成数组
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档