date时间不符时区问题

一、原因

从php5.1.0开始,PHP.ini里加了date.timezone这个选项,并且默认情况下是关闭的

也就是显示的时间(无论用什么php命令)都是格林威治标准时间

和我们的时间(北京时间)差了正好8个小时。

二、解决办法

方法一:在获取时间前加如下代码:

date_default_timezone_set(PRC);

方法二:改php.ini里面的配制,具体操作如下:

打开php.ini查找date.timezone 去掉前面的分号= 后面加XXX(PRC),重启http服务(如apache2或iis等)即可

如:date.timezone=PRC

关于XXX,大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi ,PRC(依次为重庆,上海,乌鲁木齐,中华人民共和国)

港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)

还有新加坡:Asia/Singapore

其它:Etc/GMT-8 ,Singapore ,Hongkong

方法三:echo
date("Y-m-d H:i:s", time()+8*60*60);

例子:

[php] view plain copy

  1. <?php
  2. //显示当天日期及时间
  3. date_default_timezone_set(PRC);
  4. $date=date("Y-m-d H:i:s");
  5. echo $date."<br>";
  6. //显示昨天日期及时间
  7. $yesterday=date("Y-m-d H:i:s",time()-24*60*60);
  8. $y1=date("Y-m-d H:i:s",mktime()-24*60*60);
  9. echo $yesterday."<br>";
  10. echo $y1."<br><br>";
  11. $z=date("z")+1;  //周为:0123456
  12. echo "今天是2010的第".$z."天<br><br>";
  13. $z=date("z")+5;  //周为:0123456 1月1日星期五 4+1=5
  14. $w=ceil($z/7);
  15. echo "<br>今天是2010的第".$w."周<br><br>";
  16. $time=time();
  17. echo $time;
  18. ?>

附:date时间格式

date("Y-m-d
H:i:s"); 显示的格式: 年-月-日 小时:分钟:秒

相关时间参数:

a -
"am" 或是 "pm"

A - "AM" 或是 "PM"

d - 几日,二位数字,若不足二位则前面补零; 如: "01"
至 "31"

D - 星期几,三个英文字母; 如:
"Fri"

F - 月份,英文全名; 如:
"January"

h - 12 小时制的小时; 如: "01"
至 "12"

H - 24 小时制的小时; 如: "00"
至 "23"

g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12"

G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23"

i - 分钟; 如: "00"
至 "59"

j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31"

l - 星期几,英文全名; 如:
"Friday"

m - 月份,二位数字,若不足二位则在前面补零; 如: "01"
至 "12"

n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12"

M - 月份,三个英文字母; 如:
"Jan"

s - 秒; 如: "00"
至 "59"

S - 字尾加英文序数,二个英文字母; 如: "th","nd"

t - 指定月份的天数; 如: "28"
至 "31"

U - 总秒数

w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六)

Y - 年,四位数字; 如:
"1999"

y - 年,二位数字; 如:
"99"

z - 一年中的第几天; 如: "0" 至 "365"

时间: 2024-10-05 22:20:58

date时间不符时区问题的相关文章

【转帖】linux date 显示指定时区的时间 借助TZ 环境变量 export TZ=Asia/Shanghai 或 America/New_York

linux date 显示指定时区的时间 借助TZ 环境变量 export TZ=Asia/Shanghai 或 America/New_York 2015-02-10 10:58:22 youcharming 阅读数 14670 文章标签: linuxdate显示指定时区TZ环境变量 更多 分类专栏: linux系统 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/youcharming

自动调整linux系统时间和时区与Internet时间同步

调整linux系统时间和时区与Internet时间同步 一.修改时区:# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime修改为中国的东八区# vi /etc/sysconfig/clockZONE="Asia/Shanghai"UTC=falseARC=false 二.配置新的时间日期设定:# date -s 2008/05/06 时间设定:# date -s 18:40:00 查看硬件时间(BIOS的):    hwclock

debian系统之修改时间与时区

时区: 1.图形界面配置时区的命令: dpkg-reconfigure tzdata 该操作会修改两个文件 /etc/timezone #该文本文件可直接修改 /etc/localtime #该文件可通过软连接修改    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 或者直接 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 所以时区的修改需要修改两个地方: 1.修改 /etc

Android中关于日期时间与时区的使用总结

原文引自:http://www.2cto.com/kf/201312/266908.html 在开发Android的过程中,出现过几次由于日期时间导致的问题,而且主要是由于时区的原因导致,所以一直想总结一下,形成一个良好的开发规范. 一.Unix时间戳 Unix时间戳(Unix timestamp),或称Unix时间(Unix time).POSIX时间(POSIX time),是一种时间表示方法,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数.Unix时间戳不仅被

调整linux系统时间和时区

一.修改时区:# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime修改为中国的东八区# vi /etc/sysconfig/clockZONE="Asia/Shanghai"UTC=falseARC=false 二.配置新的时间日期设定:# date -s 2008/05/06 时间设定:# date -s 18:40:00 查看硬件时间(BIOS的):    hwclock [-rw]     -r:查看现有BIOS时间,默认为-

漫谈时间和时区

漫谈时间和时区 一.前言 最近在学习关于时间.时区的知识,参考了网上的一些资料,主要来源是wiki和Linux Manual,现在把阅读过程中的一些心得记录下来.在本文中,简略描述了下列相关内容: 时间度量 计时系统 GMT UT TAI UTC Unix Time Linux time zone setting Daylight saving time 二.时间 时间是一个很有趣的东西.远古人们基于太阳运转的昼夜交替,称之为日:观察月亮的盈缺变换,在两次月圆之间的周期定为月:再通过测量太阳南北

服务器时间和时区错误引起的mysql数据统计出错

运营那边说,后台获取的数据,时间都不准确了,立马找到运维这边,程序那边也给我这边提供了一个线索,就是在mysql里面执行了 SELECT from_unixtime(1476883657); 显示的时间并不是北京时间.因为最近刚把mysql搬到了香港,需要都按照北京时间来设置服务器时间. 先看了下服务器的系统时间 date Thu Oct 20 13:54:12 EDT 2016 时间确实不正确,设置下系统时间 date -s "2016-10-20 14:41:31" 写入cmos

linux系统修改系统时间与时区

(1)修改系统时间. linux系统时钟有两个,一个是硬件时钟,即BIOS时间,就是我们进行CMOS设置时看到的时间,另一个是系统时钟,是linux系统Kernel时间.当Linux启动时,系统Kernel会去读取硬件时钟的设置,然后系统时钟就会独立于硬件运作.有时我们会发现系统时钟和硬件时钟不一致,因此需要执行时间同步,下面就分享一下时间设置及时钟同步的命令使用方法. date命令将日期设置为2014年6月18日 ----   date -s 06/18/14 将时间设置为14点20分50秒

Linux_自动调整linux系统时间和时区与Internet时间同步

调整linux系统时间和时区与Internet时间同步 一.修改时区:# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime修改为中国的东八区# vi /etc/sysconfig/clockZONE="Asia/Shanghai"UTC=falseARC=false 二.配置新的时间日期设定:# date -s 2008/05/06 时间设定:# date -s 18:40:00 查看硬件时间(BIOS的):    hwclock