php中時間戳

仇諾伊發表於2017-12-13

首先說下時間戳吧,因為工作需要,對接介面時要用到各種型別的時間戳,所以抽個時間把這些時間戳整理了下. 如果想看看返回的時間戳對不對,這裡有個線上轉換工具,可以試試時間戳線上轉換

獲取當前的時間戳是最簡單的

格式如下: $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"))是一樣的. 如果想要得到當前日期下的零時零點零分的時間戳,需要這樣

$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位的,方便計算. 程式碼如下:

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;
        }
    }
複製程式碼

然後提取出生日期:

 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)

返回結果處理成陣列

 /*
  * 返回引數處理,物件轉化為陣列
  */
    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;
    }
複製程式碼

相關文章