首頁 >後端開發 >PHP問題 >php 怎麼實作時間戳轉格式

php 怎麼實作時間戳轉格式

藏色散人
藏色散人原創
2021-12-17 09:36:473198瀏覽

php實作時間戳記格式的方法:1、透過strtotime取得指定日期的unix時間戳記;2、使用date函數將指定時間戳記轉換成系統時間格式即可。

php 怎麼實作時間戳轉格式

本文操作環境:Windows7系統,PHP7.1版,Dell G3電腦。

php 怎麼實作時間戳轉格式?

php中時間戳與日期格式的轉換

一,PHP時間戳函數取得指定日期的unix時間戳strtotime(”2009-1- 22″) 範例如下:

echo strtotime(”2009-1-22″) 结果:1232553600

說明:傳回2009年1月22日0點0分0秒時間戳記

二,PHP時間戳記函數取得英文文字日期時間範例如下:

方便比較,使用date將當時間戳記與指定時間戳記轉換成系統時間

(1)列印明天此時的時間戳strtotime(” 1 day”)

目前時間:echo date(”Y-m-d H:i:s”,time()) 結果:2009-01-22 09:40:25

指定時間:echo date(”Y-m-d H:i :s”,strtotime(” 1 day”)) 結果:2009-01-23 09:40:25

(2)列印昨天此時的時間戳strtotime(”-1 day”)

目前時間:echo date(”Y-m-d H:i:s”,time()) 結果:2009-01-22 09:40:25

指定時間:echo date(”Y-m-d H :i:s”,strtotime(”-1 day”)) 結果:2009-01-21 09:40:25

(3)列印下個星期此時的時間戳strtotime(” 1 week ”)

目前時間:echo date(”Y-m-d H:i:s”,time()) 結果:2009-01-22 09:40:25

指定時間:echo date (”Y-m-d H:i:s”,strtotime(” 1 week”)) 結果:2009-01-29 09:40:25

(4)列印上星期此時的時間戳strtotime( ”-1 week”)

目前時間:echo date(”Y-m-d H:i:s”,time()) 結果:2009-01-22 09:40:25

#指定時間:echo date(”Y-m-d H:i:s”,strtotime(”-1 week”)) 結果:2009-01-15 09:40:25

(5)列印指定下週幾的時間戳strtotime(”next Thursday”)

目前時間:echo date(”Y-m-d H:i:s”,time()) 結果:2009-01-22 09:40:25

指定時間:echo date(”Y-m-d H:i:s”,strtotime(”next Thursday”)) 結果:2009-01-29 00:00:00

(6)列印指定上星期幾的時間戳strtotime(”last Thursday”)

目前時間:echo date(”Y-m-d H:i:s”,time()) 結果:2009-01-22 09:40:25

指定時間:echo date(”Y-m-d H:i:s”,strtotime(”last Thursday”)) 結果:2009-01-15 00:00:00

以上PHP時間戳函數範例可知,strtotime能將任何英文文本的日期時間描述解析為Unix時間戳,我們結合mktime()或date()格式化日期時間取得指定的時間戳,實現所需的日期時間。

範例:

<?php
//时间戳转日期
$date_time_array = getdate(1297845628); //1311177600  1316865566
$hours = $date_time_array["hours"];
$minutes = $date_time_array["minutes"];
$seconds = $date_time_array["seconds"];
$month = $date_time_array["mon"];
$day = $date_time_array["mday"];
$year = $date_time_array["year"];
 
echo "year:$year\nmonth:$month\nday:$day\nhour:$hours\nminutes:$minutes\nseconds:$seconds\n";
 
//正常日期转时间戳
echo mktime(0, 0, 0, 9, 18, 2011) . "\n";
echo mktime(0, 0, 0, 9, 25, 2011) . "\n";
 
//可以对此进行格式化
echo "time()显示年月日时分秒:" . date("Y-m-d H:i:s", time()) . "\n";
//这样连时,分秒一起显示
echo "time()只显示年月日:" . date("Y-m-d ", time()) . "\n"; //只年示年月日
 
echo "时间戳格式化:" . date("Y-m-d H:i:s", 1297845628) . "\n"; //直接使用时间戳
//把正常日期转成时间戳了,这里如果有时分秒也是同理,
$year=((int)substr("2008-12-04",0,4));//取得年份
$month=((int)substr("2008-12-04",5,2));//取得月份
$day=((int)substr("2008-12-04",8,2));//取得几号
echo mktime(0,0,0,$month,$day,$year);
 
?>

需要注意的部分

6435eeebd2f19b916bfdcb501758e943、PHP時間大的來分有兩種,一是時間戳類型(1228348800),二是正常日期格式(2008-12-4)

77d226c7a2080f1d99ea5951bd228e92、php5.1以上時間戳記會與實際時間相差8小時,解決方法如下

1、最簡單的方法就是不要用php5.1以上的版本--顯然這是不可取的方法! ! !

2、修改php.ini。打開php.ini查找date.timezone 去掉前面的分號= 後面加Asia/Shanghai,重啟apache伺服器即可--缺點就是如果程式放到別人的伺服器上,不能修改php.ini,那就奈何不得了。

3、在程式中加入時間的初始化的語句的 即:「date_default_timezone_set("Asia/Shanghai"); 」這個可以由程式設計師任意設置,我的推薦。

時區標識符,大陸內地可用的值是:PRC,Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次為中國,重慶,上海,烏魯木齊) ,Etc/GMT-8,Asia/ Harbin

港台地區可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依序為澳門,香港,台北)

還有新加坡:Asia/Singapore

這樣就可以實現輸出的是北京時間了

推薦學習:《PHP影片教學

以上是php 怎麼實作時間戳轉格式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn