date_default_timezone_get():獲得系統默認時區函數
date_default_timezone_set($str):設置系統默認時區,中國設置:"PRC"、"Asia/Shanghai"、"Asia/Chongqing"spa
time():獲得當前時間戳,返回自1970年1月1日00:00:00到當前的秒數orm
microtime() / microtime(true):獲得當前微秒數(微秒數+時間戳),加了true參數則結果將以浮點數返回字符串
date($format ,$time):格式化時間戳,輸出爲字符串get
$time:可選參數,若是沒有指定時間戳,則默認使用本地當前時間戳time()ast
$format參數可用格式字符串:form
d 月份中的第幾天,有前導0的兩位數字 01~31 變量
D 星期中的第幾天,3個字母 Mon~Sundate
j 月份中的第幾天,沒有前導0 1~31方法
l(L的小寫) 星期幾,完整的文本 Sunday~Saturday
N ISO-8601數字表示星期中的第幾天 1(星期一)~7(星期天)
S 每個月天數後面的英文後綴,2個字符 st、nd、rd或th,可和j一塊兒使用
w 星期中的第幾天,數字表示 0(星期天)~6(星期六)
z 年份中的第幾天 0~365
W ISO-8601年份中的第幾周,每週從星期一開始 如:42(當年的第42周)
F 月份,完整的文本格式 January~December
m 數字表示的月份,有前導0 01~12
M 3個字母縮寫表示的月份 Jan~Dec
n 數字表示的月份,沒有前導0 1~12
t 給定月份應有的天數 28~31
L 是否爲閏年 若是是閏年爲1,不然爲0
o ISO-8601年份數字,和Y值相同 1999
Y 4位數字完整表示的年份 1999
y 2位數字表示的年份 99
a 小寫的上午和下午值 am或pm
A 大寫的上午和下午值 AM或PM
B Swatch Internet標準時 000到999
g 小時,12小時格式,無前導0 1~12
G 小時,24小時格式,無前導0 0~23
h 小時,12小時格式,有前導0 01~12
H 小時,24小時格式,有前導0 00~23
i 分鐘,有前導0 00~59
s 秒數,有前導0 00~59
e 時區標識 如UTC、GMT
I(i大寫) 是否爲夏令時 若是是夏令時爲1,不然爲0
O 與格林威治時間相差的小時數 如+0200
P 與格林威治時間(GMT)的差異,小時和分鐘間有冒號 如+02:00
T 本機所在的時區 如EST、MDT
Z 時差偏移量的秒數,UTC西邊的時區偏移量老是負的,UTC東邊的時區偏移量老是正的 -43200~43200
c ISO-8601格式的日期 2004-02-12T15:19:21+00:00
r RFC822格式的日期 Thu,21 Dec 2000 16:01:07 +0200
U 從Unix紀元(January 1 1970 00:00:00 GMT)開始至今的秒數 time()
例:
echo "當前時間戳:",time(),"<br>";
echo "當前日期時間:",date("Y-m-d H:i:s",time()),"<br>";
mktime($hour_H ,$minute_i ,$second_s ,$month_n ,$day_j ,$year_Y):將時間日期轉爲Unix時間戳輸出,時間戳是一個長整數包含了從Unix紀元到當前的秒數,該函數的參數能夠從右向左省略,省略的參數會被自動設置成本地的時間日期的當前值
strtotime($strtime ,$time):將時間日期字符串解析爲Unix時間戳輸出,失敗則返回false
$time:可選參數,若是沒有指定時間戳,則默認使用本地當前時間戳time()
例1:
echo "當前日期時間戳:",strtotime ( "now" ),"<br>";
echo "2018年1月1號12:00:00的時間戳:",strtotime ( "2018-01-01 12:00:00" ),"<br>";
echo "2000年9月10號的時間戳:",strtotime ( "10 September 2000" ),"<br>";
echo "明天的這時刻:",date("Y-m-d H:i:s",strtotime( "+1 day" )),"<br>";
echo "昨天的這時刻:",date("Y-m-d H:i:s",strtotime( "-1 day" )),"<br>";
echo "下週的這時刻:",date("Y-m-d H:i:s",strtotime( "+1 week" )),"<br>";
echo "上週的這時刻:",date("Y-m-d H:i:s",strtotime( "-1 week" )),"<br>";
echo "一週零兩天四小時兩秒後:",date("Y-m-d H:i:s",strtotime( "+1 week 2 days 4 hours 2 seconds" )),"<br>";
echo "向上最近的一個週一:",date("Y-m-d",strtotime( "last Monday" )),"<br>";
echo "向下最近的一個週四:",date("Y-m-d",strtotime( "next Thursday" )),"<br>";
echo "一個月後:",date("Y-m-d",strtotime( "+1 month" )),"<br>";
echo "一個月前:",date("Y-m-d",strtotime( "last month" )),"<br>";
echo "十年後:",date("Y-m-d",strtotime( "+10 year" )),"<br>";
例2:
$date="2018-01-31 12:30:59";
echo "指定日期的一個月前的相同時刻:",date("Y-m-d H:i:s",strtotime("-1 month",strtotime($date)));
注意:32位系統中,有效的時間戳範圍是格林威治時間1970年01月01日到2038年01月19日03:14:07,複合32位中一個整型變量所能保存的最大值,超過這個時間後整型數值將會溢出,能夠使用DateTime類來解決這個問題:
例:
$date="2040-01-01 12:00:00";
$dt=new DateTime($date);
echo $dt->format('U'); // 2209032000 轉成Unix時間戳
echo $dt->format('Y-m-d H:i:s'); // 2040-01-01 12:00:00 格式化輸出時間日期
//將Unix時間戳轉爲datetime
$dt=new DateTime('@2209032000');
echo $dt->format('Y-m-d H:i:s'); // 2040-01-01 12:00:00
//使用DateTime類的setTimezone方法設置時區
$dt=new DateTime('@1420029030');
$tz=timezone_open('Asia/HONG_KONG');
$dt->setTimezone($tz);
echo $dt->format('Y-m-d H:i:s'); // 2014-12-31 20:30:30