2010年12月14日 星期二

日期Date 函式

PHP Date函式是會依據指定的時間參數,傳回伺服器的時間的值。


語法(Syntax
date(format,timestamp)

Parameter
Description
Format
Required. Specifies the format of the timestamp.
timestamp
Optional. Specifies a timestamp. Default is the current date and time.

PHP Date() - Format the Date
Date()函式的使上,Format是必須的,它用以規範你所取得的時間格式。

d - Represents the day of the month (01 to 31)
m - Represents a month (01 to 12)
Y - Represents a year (in four digits)

Example:
<?php
echo date("Y/m/d") . "<br />";
echo date("Y.m.d") . "<br />";
echo date("Y-m-d")
echo date("Ymd")
?>

Output:
2009/05/11
2009.05.11
2009-05-11
20090511

看到上述範例,date()中除了ymd外,還在參數中間夾帶了「/.-」及其他字元,它是可以用來區隔各日期標籤,基本上使用方式就是這樣,差別在於參數上的更換而己。

再來針對各參數進行說明:
參數
說明
範例
Y
四位數西元年
19972008
y
二位數西元年
9708
F
月份的英文名稱
MayJuly
M
月份英文名縮寫
JanAug
m
二月數月份
0211
n
二位數月份(前面不補零)
211
t
當月次的天數
28~31
d
二位數日期
0731
j
二位數日期(前面不補零)
731
時間
a
上午或下午(小寫)
ampm
A
上午或下午(大寫)
AmPm
g
12小時制的時(不補零)
1 ~ 12
h
12小時制的時
01 ~ 12
G
24小時制的時
0 ~ 23
H
24小時制的時(不補零)
00 ~ 23
i
00 ~ 59
s
00 ~ 59
D
星期英文縮寫
MonFri
I
星期英文名稱
MondayFriday
N
星期(數字)
1(週日)、7(週六)
w
星期(數字)
0(週日)、6(週六)
時區
O
格林威治標準時間的時差
+0800

另外一個time()函式,在使用上不需要用任何參數時他會回傳1970/01/01 00:00:00到現在時間的秒數,這個秒數稱為時間戳記(timestamp)。Time()經常用來與date()做搭配,用來取得當下之前或之後的時間。

使用time()+與目前時間的相差秒數來產生2小時後、1天前….等其他時間的時間戳記,然後放在date()的第二個參數中。

//顯示2小時之後的日期時間
Echo date(‘Y-m-d H:i:s’, time() + 2 * 60 * 60);
//顯示1天之前的日期時間
Echo date(‘Y-m-d H:i:s’, time() - 1 * 86400);
//顯示1星期之後的日期時間
Echo date(‘Y-m-d H:i:s’, time() + 7 * 86400);

使用上很簡單,因為time()取得1970到目前的秒數,只要針對這個數值做加減,就可以取得當下時間前後的時間數據。另外也有一種方式是直接指定日期時間,取得其時間戳記,它就是mktime()函式。

語法(Syntax
mktime(hour,minute,second,month,day,year,is_dst)

Example:
<?php
$tomorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y"));
echo "Tomorrow is ".date("Y/m/d", $tomorrow);
?>

Output:
Tomorrow is 2009/05/12

上述範例利用mktime()填入參數來設定日期,當中使用date()函數來取得當下的時間,然後在日期的部份+1,變成取得當下時間明天為時間戳記。

然後在date()函數時,我們使用參數取得西元年、月、日,再利用使用mktime()函式所取得之時間戳記,即取得當下時間明天的日期,與time()函式使用上有所出入,但效果其實是一樣的。

mktime()time()配合,還可以用來取得日期時間的間隔,製作像是倒數計時器的效果。

<?php
//設定2010聖誕節日期減掉當下日期的秒數為兩者的間隔秒數
$second=mktime(0, 0, 0, 12, 25, 2010) – time();
//換算成天數
$days = $second / (24*60*60);
Echo ‘2010年耶誕節還有’.$second.’’.$day.’’;
?>

上述範例就可以列出距離聖誕節還有多少時間。

設定時區
因為date()是直接取得主機日期時間,對於網頁程式來說,程式是在遠端的伺服器執行,如果主機在美國,而我們在台灣執行瀏覽網頁,所產生的結果將不符合我們所需,因此必須透過設定時間來做變化。

語法(Syntax
Dete_default_timezone_set(timezone)

Timezone即是我們所要設定的時區。

以台灣為例,所在的時區為「Asia/Taipei」。

Example:
Dete_default_timezone_set(Asia/Taipei)

日期時間函式就先到此告一段落,這是一個相當重要的函式,希望你能夠瞭解如何去使用它。

參考資料:
PHPMySQL網頁設計實務/網奕出版/吳權威 編著

最新PHP/MySQL/AJAX網頁程式設計 旗標出版 施威銘研究室著

沒有留言:

張貼留言