Unix時間戳(Unix timestamp),或稱Unix時間(Unix time)、POSIX時間(POSIX time),是一種時間表示方式,定義爲從格林威治時間1970年01月01日
00時00分00秒起至現在的總秒數。
php設置時區(默認爲格林尼治時區):
date_default_timezone_set('Asia/Shanghai');//'Asia/Shanghai' 亞洲/上海
date_default_timezone_set('Asia/Chongqing');//其中Asia/Chongqing'爲“亞洲/重慶”
date_default_timezone_set('PRC');//其中PRC爲“中華人民共和國”
date_default_timezone_set("Etc/GMT")//GMT時區
php.ini配置文件的date.timezone
php的time()函數不管設置的時區是什麼,返回的都是相同的unix時間戳
date("Y-m-d H:i:s", time())此函數受時區影響,返回所在時區的當前時間
strtotime("2011-03-28 11:02:55")受時區影響,先計算出參數對應的格林尼治時間,然後以此格林尼治時間的時間戳作爲返回值
===============================================================================================
mysql設置時區(默認爲使用系統所在時區):
php函數:mysql_query("SET time_zone = '+8:00'")
my.cnf:default-time-zone = '+8:00'
dos:set time_zone = '+8:00';
mysql時間比較的問題:unix_timestamp()返回當前時間戳,也可以是unix_timestamp(field),其中字段field不能加引號,或者是
unix_timestamp("2011-03-28 14:11:48"); 或者是unix_timestamp("$php_variable");
unix_timestamp()函數是不會隨時區的不同而改變的。返回值跟php的time()函數一樣
unix_timestamp("2011-03-28 16:36:48")函數會隨時區改變,返回值跟php的strtotime("2011-03-28 16:36:48")函數一樣
now()函數是會隨時區的設定而改變的,返回值跟php的date("Y-m-d H:i:s", time())函數一樣
以下數據是我在深圳時間2011-03-28 16:17:19所做的測試:
mysql> set time_zone='+0:00';
Query OK, 0 rows affected (0.00 sec)
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2011-03-28 08:17:19 |
+---------------------+
1 row in set (0.00 sec)
以下數據說明設置不同的時區,unix_timestamp()返回相同的值,unix_timestamp("2011-03-28 16:36:48")返回不同的值
mysql> set time_zone='+0:00';
Query OK, 0 rows affected (0.00 sec)
mysql> select unix_timestamp("2011-03-28 16:36:48");
+---------------------------------------+
| unix_timestamp("2011-03-28 16:36:48") |
+---------------------------------------+
| 1301330208 |
+---------------------------------------+
1 row in set (0.00 sec)
mysql> select unix_timestamp();
+------------------+
| unix_timestamp() |
+------------------+
| 1301301748 |
+------------------+
1 row in set (0.00 sec)
mysql> set time_zone='+8:00';
Query OK, 0 rows affected (0.00 sec)
mysql> select unix_timestamp("2011-03-28 16:36:48");
+---------------------------------------+
| unix_timestamp("2011-03-28 16:36:48") |
+---------------------------------------+
| 1301301408 |
+---------------------------------------+
1 row in set (0.00 sec)
mysql> select unix_timestamp();
+------------------+
| unix_timestamp() |
+------------------+
| 1301301780 |
+------------------+
1 row in set (0.00 sec)