日期時間函數庫是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>