PHP是一門非常令人驚奇的語言。它足夠強大(最大的博客(wordpress)的核心語言),它足夠廣泛(運行在最大社交網站facebook上),它足夠簡單(作為初學者首選入門語言)。在低成本的機器上運行良好。而且php語言有很多非常不錯的服務器套件(如WAMP和MAMP),很方便的安裝在你的機器上。PHP有非常豐富的庫資源,便於開發者很容易的處理一些業務。由於我們在項目中與日期接觸最多,所以今天就從日期函數入手學習。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Getting started with dates in php5</title> </head> <body> <?php date_default_timezone_set('Asia/Shanghai'); echo "Today is ",date('l'); ?> </body> </html>
你將在你的瀏覽器里看到如下的內容。
Today is Friday
這個函數輸出星期幾的文本格式。date函數至少需要一個字符參數(這個參數告訴我們怎樣格式化當前日期)。
<?php echo "Today is ",date('Y-m-d'); ?>
將得到
Today is 2012-08-17
有一些日期是很普遍地被使用,所以PHP提供了一些常量供你使用。舉例,你可以使用Cookie獲取到客戶端日期。
<?php echo "Today is ",date(DATE_COOKIE); ?>
你將得到如下面的內容
Today is Friday, 17-Aug-12 11:34:38 CST
注意當使用常量的時候不要使用引號。
<?php echo "The time is ",date('g:i:sa'); ?>
你將得到
The time is 11:39:59am
<?php date_default_timezone_set('Asia/Shanghai'); ?>
這個將設置中國上海時區。這是php5的函數(注意舊版本的php),有很多供你選擇時區。如果你想永久生效,你可以修改你的php.ini文件。
<?php echo "Today is ",date('Y-m-d', 1309133434); ?>
結果是:
Today is 2011-06-27
這個看起來沒什么用途,但它意味着你能用date()函數做計算。這之前,你需要簡單的創建一個時間戳。
<?php $mytime=mktime(9, 23, 33, 6, 26, 2011); echo "Today is ",date('Y-m-d g:i:sa', $mytime); ?>
得到的結果是:
Today is 2011-06-26 9:23:33am
mktime()函數需要你依次傳遞小時,分鍾,秒,月,日,年。這是獲取時間戳的好的方式,但是有更酷的方式。
<?php $mytime=strtotime("7:50pm June 26 2011"); echo "Today is ",date('Y-m-d g:i:sa', $mytime); ?>
輸出:
Today is 2011-06-26 7:50:00pm
PHP在解釋字符方面是相當靈巧的,但不是完美的,因此,在你插入之前一定要測試你輸入的字符。使用"english-like instructions"轉化成需要的時間戳,這是一個非常不錯的方式。你可以像下面這樣做:
$nextfriday=strtotime("next Friday"); //下周五 $nextmonth=strtotime("+1 Month"); //從今天開始計算一個月以后的時間 $lastchristmas=strtotime("-1 year dec 25"); //去年聖誕節
<?php $startdate = strtotime('next Tuesday'); $enddate = strtotime('+16 weeks', $startdate); $currentdate = $startdate; echo '<ol>'; while($currentdate < $enddate): echo "\t<li>", date('M d', $currentdate); $currentdate = strtotime('+1 week', $currentdate); endwhile; echo '</ol>'; ?>
你將會得到如下的結果:
Aug 21 Aug 28 Sep 04 Sep 11 Sep 18 Sep 25 Oct 02 Oct 09 Oct 16 Oct 23 Oct 30 Nov 06 Nov 13 Nov 20 Nov 27 Dec 04
注意一下這行:$currentdate = strtotime("+1 week", $currentdate)。在這行,你會發現你需要指定一個時間戳做為第二個參數,strtotime將使用這個參數代替默認時間戳(今天),並進行運算。
$someday = strtotime("3 weeks thursday November 1"); $daysUtilDate = ceil(($someday - time())/60/60/24); echo "There are ", $daysUtilDate, " until Thanksgiving";
首先,我們開始計算感恩節日期(11月1號之后的第一個星期四之后的第3個星期四),然后我們通過簡單的算術,計算出感恩節到當前時間之間的天數。當我們進行比較運算的時候,我們可以使用time(),因為它返回,到當前時間的紀元秒數。
