存到資料庫的用數值,頁面呈現的用字串。
建立日期時間物件
取得數值的兩種方式:time() 與 mktime()。
// 取得目前時間 $now = time(); // 取得指定的時間,時分秒月日年 $past = mktime(3,4,5,1,2,2012);格式化日期時間
取得字串的四種方式:date()、strftime()、getdate() 與 localtime(),嚴格來說,後兩種是回傳陣列,前兩種才是回傳字串。
echo '<b>getdate()</b><br/>'; $gd = getdate(); foreach($gd as $key => $value) { echo $key.':'.$value.'<br/>'; } echo '<b>getdate(mktime(15, 0, 0, 12, 25, 2011))</b><br/>'; $gd = getdate(mktime(15, 0, 0, 12, 25, 2011)); foreach($gd as $key => $value) { echo $key.':'.$value.'<br/>'; } echo '<b>localtime()</b><br/>'; $lt = localtime(); foreach($lt as $key => $value) { echo $key.':'.$value.'<br/>'; } echo '<b>localtime(time(), true)</b><br/>'; $lt = localtime(time(), true); foreach($lt as $key => $value) { echo $key.':'.$value.'<br/>'; }得到結果為
getdate() seconds:38 minutes:52 hours:13 mday:17 wday:2 mon:7 year:2012 yday:198 weekday:Tuesday month:July 0:1342504358 getdate(mktime(15, 0, 0, 12, 25, 2011)) seconds:0 minutes:0 hours:15 mday:25 wday:0 mon:12 year:2011 yday:358 weekday:Sunday month:December 0:1324796400 localtime() 0:38 1:52 2:13 3:17 4:6 5:112 6:2 7:198 8:0 localtime(time(), true) tm_sec:38 tm_min:52 tm_hour:13 tm_mday:17 tm_mon:6 tm_year:112 tm_wday:2 tm_yday:198 tm_isdst:0將日期格式化為字串。
date('Y/m/d H:i:s'): 2012/07/17 13:52:38 date('y/n/j G:i:s'): 12/7/17 13:52:38 strftime('%Y/%m/%d %H:%M:%S'): 2012/07/17 13:52:38 strftime('%y/%m/%d %H:%M:%S'): 12/07/17 13:52:38 date('Y/m/d H:i:s', mktime(3, 4, 5, 1, 2, 2011)): 2011/01/02 03:04:05 date('y/n/j G:i:s', mktime(3, 4, 5, 1, 2, 2011)): 11/1/2 3:04:05 strftime('%Y/%m/%d %H:%M:%S', mktime(3, 4, 5, 1, 2, 2011)): 2011/01/02 03:04:05 strftime('%y/%m/%d %H:%M:%S', mktime(3, 4, 5, 1, 2, 2011)): 11/01/02 03:04:05驗證日期
checkdate($m, $d, $y);日期時間間隔
// 沒有方便的 function 可用 $a = mktime(3,4,5,7,2,2012); $b = time(); $diff = $b - $a; $diff_d = floor($diff/(24*60*60)); $diff -= $diff_d * 24 * 60 * 60; $diff_h = floor($diff/(60*60)); $diff -= $diff_h * 60 * 60; $diff_m = floor($diff/60); $diff -= $diff_m * 60; echo $diff_d.' days '.$diff_h.' hours '.$diff_m.' minutes '.$diff.' seconds';解析日期時間字串
// 神奇的 strtotime() // 數值 $a = mktime(3,4,5,7,2,2012); // 轉成字串 $b = date('Y/m/d H:i:s', $a); // 打回數值, $a == $c $c = strtotime($b);日期時間加加減減
// 數值 $a = mktime(3,4,5,2,29,2012); echo date('Y/m/d H:i:s', $a).' '; // 還是用神奇的 strtotime() // 加一天 $b = strtotime('+1 day', $a); echo date('Y/m/d H:i:s', $b).' '; // 加一個月 $b = strtotime('+1 month', $a); echo date('Y/m/d H:i:s', $b).' '; // 加一年 $b = strtotime('+1 year', $a); echo date('Y/m/d H:i:s', $b).' '; // 輸出 2012/02/29 03:04:05 2012/03/01 03:04:05 // 加一天 2012/03/29 03:04:05 // 加一月 2013/03/01 03:04:05 // 加一年,有點奇怪這個神奇的 strtotime() 比較適合用來加減「非固定長度」的時間間隔,這裡說得就是「月」,如果是固定間隔的,轉成數值用秒加減就可以了。
---
沒有留言:
張貼留言