存到資料庫的用數值,頁面呈現的用字串。
建立日期時間物件
取得數值的兩種方式: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() 比較適合用來加減「非固定長度」的時間間隔,這裡說得就是「月」,如果是固定間隔的,轉成數值用秒加減就可以了。
---
沒有留言:
張貼留言