PHP教學-日期與時間函數


日期與時間函數之一

電腦的標準時間是以Unix紀元(格林威治時間1970年1月1日00:00:00)
開始計算,以本文撰寫時間(2012年2月24日下午3時49分3秒)為例:從Unix紀元開始到現在已經經過了1393224543秒,這個秒數在地球上的任何時區都是一樣的,範例如下:
<?php
$time=gettimeofday();  //取得現在時間
echo $time[sec],"<br>";  //Unix紀元開始到現在的秒數
?>
說明:
函數gettimeofday取得的時間為一組陣列,有四個陣列成員,分別如下:
一、鍵「sec」為「Unix紀元開始到現在的秒數」
二、鍵「usec」為「微秒(microseconds):百萬分之一秒」
三、鍵「minuteswest」為「與格林威志時間的時差(換算成分鐘數)」
四、鍵「dsttime」為「夏令時間修正類型」
由於時間是不斷前進的,每一次重新整理時,輸出網頁的秒數會繼續往上加。
如果要將「Unix紀元開始到現在的秒數」轉換為本地時間,則要以函數date_default_timezone_set設定時區,再以時間函數date將時間格式化。以台北時間為例,範例如下:
<?php
date_default_timezone_set("Asia/Taipei");  //設定時區
$TWtime=date("Y-n-j G:i:s",1393224543);  //將時間格式化
echo $TWtime;
?>
說明:
一、設定時區時,變更函數date_default_timezone_set雙引號內的引數即可,底下是幾個較常見的地點:
檀香山:Pacific/Honolulu(時區:-10.00)
洛杉磯:America/Los_Angeles(時區:-8.00)
紐約:America/New_York(時區:-5.00)
台北:Asia/Taipei(時區:8.00)
首爾:Asia/Seoul(時區:9.00)
一 般在資料儲存時,文章、新聞…等,多會寫入日期、時間,最精確的時間標籤是「Unix紀元開始到現在的秒數」,例如某個英文討論區的一篇文章,發言人在 洛杉磯的下午4時,紐約人的感覺是下午7時發文的,而檀香山當時才下午2時。讓異地的會員設定不同的時區,就能使「同一篇文章,在不同時區的網友,觀看到 的發言時間在地化」。
二、函數date有兩個參數,第一個是「所要產生的時間格式」;第二個是引數,就是被轉換的時間戳,引數可有可無,沒有指定的引數,則默認為現在時間。

日期與時間函數之二

函數date有兩個參數,第一個是「所要產生的時間格式」;第二個是引數,就是被轉換的時間戳(Timestamp),引數可有可無,沒有指定的引數,則默認為現在時間。以下範例只設定第一個參數「時間格式」,讓函數date格式化現在時間,並且直接輸出於網頁。
<?php
date_default_timezone_set("Asia/Taipei");  //設定時區
echo date("Y年m月j日 G時i分s秒");  //第1個參數是時間格式;第2個參數是引數,沒有引數時,默認為現在時間。
//date("Y-n-j G:i:s",1393224543);  //逗點之後的數值為引數。
?>
說明:
一、函數date的第一個參數「時間格式」只會將內定的符號轉換為代表時間的數值,本例中的「Y、m、 j、G、i、s」會轉換為數值,「年、月、日、 (空格)、時、分、秒」則保持原狀,所以本範例會輸出一個晚於「2014年02月25日 11時47分50秒」的日期時間。

二、函數date內定的符號,下表列出最常用的部分:
Y:4位數字表示的年份,例:2014。
y:2位數字表示的年份,例:14。
F:月份的英文,例:January。
M:月份的英文縮寫,例:Jan。
n:數字表示的月份,沒有前導零,1-12。
m:數字表示的月份,有前導零,01-12。
j:月份中的第幾天,沒有前導零,1-31。
d:月份中的第幾天,有前導零,01-31。
z:一年中的第幾天,0-365。
g:12小時制,沒有前導零,1-12。
G:24小時制,沒有前導零,0-23。
h:12小時制,有前導零,01-12。
H:24小時制,有前導零,00-23。
i:有前導零,00-59。
s:有前導零,00-59。
星期W:一年中的第幾週,每週從星期一開始,例:28。
l:星期幾的英文,例:Sunday。
D:星期幾的英文縮寫,例:Sun。
w:星期幾的數字,0-6(星期日-星期六)。

留言

張貼留言

這個網誌中的熱門文章

c語言-關於#define用法

CMD常用網管指令

使用windows CMD 時間自動校正