php取得時期時間資訊函數

在正式學習日期函數前大家得了解幾個概念:

    1.時區

    2.世界時

# 3.unix時間戳記

時區

這個概念,之前大家聽過很多。我們來囉嗦兩句,我們現實生活中使用的實區,在電腦裡面也是一樣有規定的。
1884年在華盛頓舉行國際經度會議時,為了克服時間上的混亂,規定將全球劃分為24個時區。
在中國採用首都北京所在地東八區的時間為全國統一使用時間。

世界時

不光是天文學家使用格林尼治時間(英文簡寫:GMT),就是在新聞報刊上也常出現這個名詞。我們知道各地都有各地的地方時間。如果對國際上某一重大事情,用地方時間來記錄,就會感到複雜不便.而且將來日子一長容易搞錯。因此,天文學家提出一個大家都能接受且方便的記錄方法,那就是以格林尼治(英國某地區)的地方時間為標準。

unix時間戳記

電腦本身不認識時間,我們在電腦裡面設定一個時間方便運算。於是我們規定了一種計算方式,unix時間戳記。
從Unix紀元(1970 年 1月1日零時)開始到一個時間經過的秒數。

我們學了幾個概念,那我們現在可以開始來學習時間函數了。

1. 設定時區

如果,我們是跨國的多語方程序,我們通常是透過在設定檔裡面來寫好了個時區,每次程式運行的時候。都會讀取這個時區的設置,來顯示時間。

設定時區的函數為:
1). date_default_timezone_get()
2).date_default_timezone_set()

第一個函數我們就不重點講解了,比較簡單。

用法如下:

string date_default_timezone_get ( void )

功能如下:
取得一個腳本中所有日期時間函數所使用的默認時區

範例:

<?php
echo date_default_timezone_get ();
?>

這樣就顯示出來了目前設定的時間。

第二個函數是重點:

用法如下:

bool date_default_timezone_set ( string $timezone_identifier )

功能如下:
用於所有日期時間函數的預設時區

範例:

<?php

//定义一下时区常量,以后你可以放到配置文件里
define('TIME_ZONE','Asia/shanghai');

//执行函数
date_default_timezone_set(TIME_ZONE);

echo date('Y-m-d H:i:s');

?>

上例的程式碼比較試試,再將date_default_timezone_set註解掉,再看看會提示什麼。

附註:
時區清單請詳見官方手冊 http://php.net/manual/zh/timezones.php

2.time()取得目前的unix時間戳記

time()函數的功能是取得目前時間的Unix 時間戳記。

以下程式碼輸出目前時間的Unix 時間戳記。

<?php
   $time=time();
   print_r( $time);
?>

程式運行結果:
1421597858

#3. 「亞麻跌」是PHP學習時間處理的關鍵

Y 英文是year,為年份代表年— —亞

m 英文代表month,為月份代表-麻

d 英文代表day,為日期代表-跌

所以我們需要輸出前前的年份,月份,日期的話。例如:1997年7月1日,我們就可以用到上面的三個參數。

<?php

echo date('Y年m月d日');
?>

你可以運行程式碼試試,看看是不是顯示出來了。

後面還有幾個參數:

H:m:s 代表的是:時分秒

h 的英文為:hour 代表小時

i的英文為:minute 代表分鐘

s的英文為:second 代表秒

#寫全了就是:

<?php

//就可以显示出来当前的时间了哟。
echo date('Y-m-d H:i:s');
?>

date函數用來格式化一個時間輸出,以方便時間的顯示或儲存。其語法格式如下:
string date ( string $forrnat [, int $tirnestamp] )
在參數清單中:

$timestamp是一個時間戳,函數將這個時間戳按$format規定的格式輸出。

如果$timestamp沒有輸入值,則預設為目前的時間。

$format是一個時間輸出格式的字串,需要使用規定的字元建構輸出格式。

date函數的格式參數表:

##d#月份中的第幾天,有前導零的2 位數字01 到31#D英文星期幾,3個字母Mon到Sunj月份中的第幾天,沒有前導零1 到31l(字母)英文星期幾Sunday到SaturdayN1格式數字表示的星期1(表示星期一)到7(表示星期日)#S每月天數後面的英文後綴, 2個字元st,nd,rd或th。可以和jg一起用w星期中的第幾天,數字表示0(表示星期日)到6(表示星期六) z一年中的第幾天0到366W年份中的第幾週,每週從星期一開始42(當年的第42週)F月份,完整的文字格式January 到Decemberm數字表示月份,有前導零01 到12M3個字母縮寫表示的月份#Jan 到Decn數字表示月份,沒有前導零1 到12t給定月份所應有的天數28 到31L是否為閏年如果是閏年為1,否則為o#o格式年份數字例如2007Y#4 位元數字完整表示年份例如1999或2008y#2 位數字表示的年份例如99或08#a小寫的上午和下午值am或pm#A大寫的上午和下午值AM或PMg小時,12小時格式,沒有前導零1到12G小時,24小時格式,沒有前導零0 到23i有前導零的分鐘數00 到59s秒數,有前導零00到59e時區識別#U從Unix紀元開始至今的秒數長整數數字


3. getdate取得目前系統時間

getdate用來取得目前系統的時間,或是取得時間戳記的具體意義。時間戳記是長整數,表示getdate的語法格式如下所示。

array getdate ([ int $timestamp = time() ] )

函數的傳回值是根據timestamp得到的包含有時間資訊的陣列。如果沒有參數,則會傳回目前的時間。 getdate傳回的數組,鍵名包括時間和日期的完整資訊。

字元說明傳回值

數字0到59數字0到59數字0到23數字1到31數字0(表示星期日)到6 (表示星期六)數字1 到124 位數字表示的完整年份數字0到365Sunday到SaturdayJanuary 到December長整數數字
鍵名稱說明回傳值
## secnods
#minutes分鐘
hours小時
mday 中第幾天
wday#星期中第幾天
mon月份
year
yday一年中第幾天
weekday星期幾的英文
month 月份的英文
#0自從Unix紀元開始的秒數


以下程式碼可以傳回getdate 陣列的詳細資訊。

<?php
   $mytime=getdate(); 
   print_r( $mytime);
?>

print_r可以輸出一個陣列中所有的鍵名與值。運行這段程式碼,結果如下所示。程式輸出目前電腦的時間與日期詳細資料:

Array
(
    [seconds] => 1            //秒
    [minutes] => 10            //分钟
    [hours] => 17            //小时
    [mday] => 18            //日
    [wday] => 0            //星期中的第几天
    [mon] => 1            //月
    [year] => 2015            //年
    [yday] => 17            //年中的第几天
    [weekday] => Sunday        //星期
    [month] => January        //月份
    [0] => 1421597401        //时间戳
)

了解getdate函數與傳回的陣列以後,就很容易取得目前的時間資訊了。下面的程式碼就是用getdate函數取得時間訊息,呼叫傳回時間數組的值輸出時間資訊。

<?php 
$mytime = getdate();
echo "年 :".$mytime['year']."\n";
echo "月 :".$mytime['mon']."\n";
echo "日 :".$mytime['mday']."\n";
echo "时 :".$mytime['hours']."\n";
echo "分 :".$mytime['minutes']."\n";
echo "秒 :".$mytime['seconds']."\n";
echo "一个小时中的第几钟 :".$mytime['minutes']."\n";
echo "这是一分钟的第几秒 :".$mytime['seconds']."\n";
echo "星期名称 :".$mytime['weekday']."\n";
echo "月份名称 :".$mytime['month']."\n";
echo "时间戳   :".$mytime[0]."\n";
?>

執行這個程序,會顯示目前時間的詳細資訊。程式的運行結果如下所示。

年:2015
月:1
日:18
時:17
分:14
秒:11
一星期中的第幾天:14
一年中的第幾天:11
星期名稱:Sunday
月份名稱:January

時間戳:1421597651######
繼續學習
||
<?php $timestamp = strtotime($time); $date = date("y-m-d",$timestamp); echo $date; ?>