PHP進階(第九彈:日期時間函數)

日期時間函數庫是PHP內置函數庫,可以獲取服務器的日期時間相關內容。

我們可以先看看php是否已經有了日期時間庫的擴展:

<?php
phpinfo();

運行該文件,可以搜到,date/time support是enabled的,說明已經有這個擴展了。

設置時區

在phpinfo()中可以看到,默認的時區Default timezone爲UTC。
可以使用date_default_timezone_get()來獲取時區。

可以通過幾種方法設置時區

修改配置文件

修改PHP配置文件data.timezone設置時區。
打開php.ini,找到date.timezone,設置爲中國的時區如PRC,保存文件,重啓服務器即可。

可以在http://php.net上搜索date_default_timezone_set,找到所支持的時區列表。

通過date_default_timezone_set()動態設置時區

date_default_timezone_set('Asia/Shanghai');

通過ini_set()動態設置時區

ini_get('date.timezone');
ini_set('date.timezone','Asia/Shanghai');

要注意,使用這兩個函數時,需要配置文件中相應的配置項打開纔行(即在配置文件中該配置項沒有使用分號註釋掉)。並且不是所有的配置項都能用這兩個函數設置和獲取。具體用法可參見PHP手冊。

date()函數

date()函數非常常用,常用參數如下(注意大小寫):

format 說明 返回值
Y 4位完整的年份 例如2017
y 2位年份 例如17
m 月份,帶前導零 01~12
d 月份中的第幾天,帶前導零 01~31
H 小時,24小時格式,帶前導零 00~23
i 分鐘,帶前導零 00~59
s 秒鐘,帶前導零 00~59

如:

echo date('Y年m月d日');
echo date('Y-m-d');
echo date('Y/m/d H:i:s');

還有更多的format,具體可參見PHP手冊:http://php.net/,搜索date即可。

time()函數

使用time()可以獲取當前的時間戳。
時間戳是指從1970年1月1日00:00:00到當前時間所經歷的秒數。

date()函數的第二個參數是一個時間戳,默認傳的就是當前的時間戳,
date('Y-m-d')date('Y-m-d',time())是一樣的。

想要得到一天後的日期:

echo date('Y-m-d H:i:s',time()+24*3600);

mktime()函數

如果想要把日期轉換成時間戳,可以使用mktime()函數,通常用於計算兩個日期的時間差,如:

$birth=mktime(0,0,0,10,1,2000);
$now=time();
$age=floor(($now-$birth)/(24*3600*365));
echo $age;

更多使用可參照PHP手冊。

strtotime()函數

這個函數可以將任何字符串的日期時間描述解析爲 Unix 時間戳,如想要獲取後一天的日期:

echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
echo date('Y-m-d H:i:s',strtotime('+1 day')),'<br/>';
echo date('Y-m-d H:i:s',strtotime('+2 days')),'<br/>';
echo date('Y-m-d H:i:s',strtotime('-1 day')),'<br/>';
echo date('Y-m-d H:i:s',strtotime('+1 month')),'<br/>';
echo date('Y-m-d H:i:s',strtotime('+2 years')),'<br/>';
echo date('Y-m-d H:i:s',strtotime('+2 years 5 months 10 days')),'<br/>';

更多用法參見PHP手冊。

H5中新增表單日期時間相關的控件

如:

<input type="date" name="datetime" id="" /><br>
<input type="datetime-local" name="datetime1" id="" /><br>
<input type="month" name="month" id="" /><br>
<input type="week" name="week" id="" /><br>
<input type="time" name="time" id="" /><br>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章