用PHPCMS V9 建站時,常常會用到時間標籤,它是通用標籤調用-日期時間格式化,適用全站。php
1、日期時間格式化顯示:apache
a\標準型:{date('Y-m-d H:i:s', $rs['inputtime'])} 輸出爲:2013-01-31 13:15:10服務器
b\拆分型:{date('Y',$rs[inputtime])}年{date('m',$rs[inputtime])}月{date('d',$rs[inputtime])}日 輸出爲:2013年01月31日函數
c\擴展型:spa
{date('Y',$inputtime);} 4位年份 輸出爲:2013 或 2014unix
{date('y',$inputtime);} 2位年份 輸出爲:10 或 11code
{date('F',$inputtime);} 英文月份全稱 輸出爲:January 到 Decemberblog
{date('M',$inputtime); } 英文月份縮寫 輸出爲:Jan 到 Decip
{date('m',$inputtime);} 前導零數字月份 輸出爲:01 到 12ci
{date('n',$inputtime); } 數字月份 輸出爲:1 到 12
{date('d',$inputtime);} 前導零日期 輸出爲:01 到 31
{date('j',$inputtime);} 日期 輸出爲:1 到 31
{date('l',$inputtime);} 英文星期全稱 輸出爲:Sunday 到 Saturday
{date('D',$inputtime);} 英文星期縮寫 輸出爲:Mon 到 Sun
{date('N',$inputtime);} 格式數字星期 輸出爲:1 到 7
{date('Y-m-d H:i:s',$rs[inputtime]+30*60)} 在獲取文章時間後加一段時間
2、PHP時間戳函數獲取指定日期的unix時間戳
1
2
3
|
<?php
echo
strtotime
(
"2017-6-27"
);
?>
|
結果:1498514400
返回2017年6月27日0點0分0秒時間戳
一、PHP時間戳函數獲取英文文本日期時間 示例以下:
便於比較,使用date將當時間戳與指定時間戳轉換成系統時間
(1)打印明天此時的時間戳strtotime(」+1 day」)
當前時間:echo date(」Y-m-d H:i:s」,time()) 結果:2017-6-27 09:40:25
指定時間:echo date(」Y-m-d H:i:s」,strtotime(」+1 day」)) 結果:2017-6-27 09:40:25
(2)打印昨天此時的時間戳strtotime(」-1 day」)
當前時間:echo date(」Y-m-d H:i:s」,time()) 結果:2017-6-27 09:40:25
指定時間:echo date(」Y-m-d H:i:s」,strtotime(」-1 day」)) 結果:2017-6-27 09:40:25
(3)打印下個星期此時的時間戳strtotime(」+1 week」)
當前時間:echo date(」Y-m-d H:i:s」,time()) 結果:2017-6-27 09:40:25
指定時間:echo date(」Y-m-d H:i:s」,strtotime(」+1 week」)) 結果:2017-6-27 09:40:25
(4)打印上個星期此時的時間戳strtotime(」-1 week」)
當前時間:echo date(」Y-m-d H:i:s」,time()) 結果:2017-6-27 09:40:25
指定時間:echo date(」Y-m-d H:i:s」,strtotime(」-1 week」)) 結果:2017-6-27 09:40:25
(5)打印指定下星期幾的時間戳strtotime(」next Thursday」)
當前時間:echo date(」Y-m-d H:i:s」,time()) 結果:2017-6-27 09:40:25
指定時間:echo date(」Y-m-d H:i:s」,strtotime(」next Thursday」)) 結果:2017-6-27 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」)) 結果:2017-6-27 00:00:00
以上PHP時間戳函數示例可知,strtotime能將任何英文文本的日期時間描述解析爲Unix時間戳,咱們結合mktime()或date()格式化日期時間獲取指定的時間戳,實現所須要的日期時間。
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
<?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
);
?>
|
須要注意的部分
<一>、PHP時間大的來分有兩種,一是時間戳類型(1228348800),二是正常日期格式(2008-12-4)
<二>、php5.1以上時間戳會與實際時間相差8小時,解決辦法以下
一、最簡單的方法就是不要用php5.1以上的版本--顯然這是不可取的方法!!!二、修改php.ini。打開php.ini查找date.timezone 去掉前面的分號= 後面加Asia/Shanghai,重啓apache服務器便可--缺點就是若是程序放到別人的服務器上,不能修改php.ini,那就奈何不得了。三、在程序中添加時間的初始化的語句的 即:「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