php,mysql之时区问题

Unix时间戳(Unix timestamp),或称Unix时间(Unix time)POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间19700101

000000秒起至现在的总秒数。

 

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

 

phptime()函数不管设置的时区是什么,返回的都是相同的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.cnfdefault-time-zone = '+8:00'

dosset 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()函数是不会随时区的不同而改变的。返回值跟phptime()函数一样

unix_timestamp("2011-03-28 16:36:48")函数会随时区改变,返回值跟phpstrtotime("2011-03-28 16:36:48")函数一样

now()函数是会随时区的设定而改变的,返回值跟phpdate("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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值