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("Y年m月d日") ?> |
Output:
2009/05/11 2009.05.11 2009-05-11 2009年05月11日 |
看到上述範例,date()中除了ymd外,還在參數中間夾帶了「/.-」及其他字元,它是可以用來區隔各日期標籤,基本上使用方式就是這樣,差別在於參數上的更換而己。
再來針對各參數進行說明:
參數 | 說明 | 範例 |
年 | ||
Y | 四位數西元年 | 1997、2008 |
y | 二位數西元年 | 97、08 |
月 | ||
F | 月份的英文名稱 | May、July |
M | 月份英文名縮寫 | Jan、Aug |
m | 二月數月份 | 02、11 |
n | 二位數月份(前面不補零) | 2、11 |
t | 當月次的天數 | 28~31 |
日 | ||
d | 二位數日期 | 07、31 |
j | 二位數日期(前面不補零) | 7、31 |
時間 | ||
a | 上午或下午(小寫) | am、pm |
A | 上午或下午(大寫) | Am、Pm |
g | 12小時制的時(不補零) | 1 ~ 12 |
h | 12小時制的時 | 01 ~ 12 |
G | 24小時制的時 | 0 ~ 23 |
H | 24小時制的時(不補零) | 00 ~ 23 |
i | 分 | 00 ~ 59 |
s | 秒 | 00 ~ 59 |
週 | ||
D | 星期英文縮寫 | Mon、Fri |
I | 星期英文名稱 | Monday、Friday |
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’) |
日期時間函式就先到此告一段落,這是一個相當重要的函式,希望你能夠瞭解如何去使用它。
參考資料:
PHP與MySQL網頁設計實務/網奕出版/吳權威 編著
最新PHP/MySQL/AJAX網頁程式設計 旗標出版 施威銘研究室著
沒有留言:
張貼留言