PHP開發筆記系列(三)-日期與時間
??? 前兩篇完成了《PHP開發筆記系列(一)-PDO使用》和《PHP開發筆記系列(二)-字串使用》,今天開始研究一下PHP中的日期時間處理和MySQL中的日期時間處理,《PHP開發筆記系列(三)-日期與時間》。
?
????? 日期時間是平常用得比較多的函數,在JAVA中我們通過new Date()可以擷取伺服器的目前時間,通過SimpleDateFormat類,並指定formatString,可以將date對象的值格式化成指定的形式。同理,在PHP中,同樣有類似的類和函數,那就是time函數和date函數。time()類似於new Date(),能夠擷取伺服器目前時間,date函數類似於SimpleDateFormat類。
1. 使用time函數擷取伺服器目前時間,使用date函數進行格式化
file:time.phpurl:http://localhost:88/datetime/timephp"; // 擷取當前預設是時區 echo date_default_timezone_get()."
"; echo date("Y-m-d h:i:s", $time)."
"; echo ""; // 設定當前預設是時區 date_default_timezone_set("America/New_York"); echo date("Y-m-d h:i:s", $time)."
";?>
?
2. 通過字串構造日期時間
file:strtotime.phpurl:http://localhost:88/datetime/strtotime.php"; // 使用date函數擷取當月總天數並輸出 echo 'total day of this month:'.date("t", $time1)."
";?>?
3. 基於目前時間的日期時間計算
file:date-compute.phpurl:http://localhost:88/datetime/date-compute.php"; echo 'last day:'.date("Y-m-d h:i:s", $lastDay)."
"; echo 'next month:'.date("Y-m-d h:i:s", $nextMonth)."
"; echo 'last month:'.date("Y-m-d h:i:s", $lastMonth)."
"; echo 'next year:'.date("Y-m-d h:i:s", $nextYear)."
"; echo 'last year:'.date("Y-m-d h:i:s", $lastYear)."
"; // 通過date函數擷取年份 echo 'current year:'.date("Y");?>
?
4. 在SQL中處理日期時間
SELECT NOW()SELECT CURRENT_TIMESTAMP();SELECT DATE_FORMAT(NOW(), "%Y-%m-%d");SELECT DATE_FORMAT(NOW(), "%h:%i:%s");SELECT DATE_FORMAT(NOW(), "%W %w %p");
?
5. 在SQL中進行日期計算
??? 使用DATE_ADD函數進行未來日期的計算
SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR);SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH);SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR);SELECT DATE_ADD(NOW(), INTERVAL 1 MINUTE);SELECT DATE_ADD(NOW(), INTERVAL 1 SECOND);
?
??? 使用DATE_SUB函數進行過去日期的計算
SELECT DATE_SUB(NOW(), INTERVAL 1 YEAR);SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH);SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR);SELECT DATE_SUB(NOW(), INTERVAL 1 MINUTE);SELECT DATE_SUB(NOW(), INTERVAL 1 SECOND);
?
??? 上述函數的執行結合也可用於SQL語句當中,如查詢前三天的日誌資訊,SQL如下:
SELECT * FROM log WHERE create_time BETWEEN SELECT DATE_SUB(NOW(), INTERVAL 3 DAY) AND SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);
?
??? 本文地址:http://ryan-d.iteye.com/blog/1543363
?