php中用date函数获取当前时间有误的解决办法

初学PHP做网站,想在页面上获得当前时间,学过编程的人都知道用时间函数date(),先用这个函数格式化一个本地时间/日期,先写个测试代码吧,结果输出时间比实际时间少了8小时,这是什么原因呢:


代码如下:

<?php
    echo date('Y-m-d H:i:s');
?〉

输出当前时间:2008-10-12 02:32:17
怪了,实际时间是:2008-10-12 10:32:17

难道是PHP的date()时间不正确 少8个小时?
再看看PHP手册的“例子 1. date() 例子”第一行多了一个 时区设置
// 设定要用的默认时区。自 PHP 5.1 可用
date_default_timezone_set('UTC');

原来php5.1.开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的,也就是显示的时间(无论用什么php命令)都是格林威治标准时间,和北京时间正好差8个小时。

如何设置可以得到正确的PHP时间?

1、修改php.ini。打开php.ini查找date.timezone 去掉前面的分号= 后面加Asia/Shanghai,重启apache服务器即可--缺点就是如果程序
放到别人的服务器上,不能修改php.ini,那就奈何不得了。

2、在程序中添加时间的初始化的语句的 即:“date_default_timezone_set("Asia/Shanghai"); ”这个可以由程序员任意设置,我的推荐。
时区标识符,大陆内地可用的值是:PRC,Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为中国,重庆,上海,乌鲁木齐) ,Etc/GMT-8,Asia/Harbin

港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)还有新加坡:Asia/Singapore
这样就可以实现输出的是北京时间了。

更详细的时区代码 时区编码 时区索引码 timezone_identifier 大家可以在官方网站中查到。

(0)

相关推荐

  • PHP date函数参数详解

    time()在PHP中是得到一个数字,这个数字表示从1970-01-01到现在共走了多少秒,很奇怪吧 不过这样方便计算, 要找出前一天的时间就是 time()-60*60*24; 要找出前一年的时间就是 time()*60*60*24*365 那么如何把这个数字换成日期格式呢,就要用到date函数了 $t=time();  echo date("Y-m-d H:i:s",$t); 第一个参数的格式分别表示: a - "am" 或是 "pm"  A

  • PHP date函数常用时间处理方法

    复制代码 代码如下: echo "今天:".date("Y-m-d")."<br>";     echo "昨天:".date("Y-m-d",strtotime("-1 day")), "<br>";     echo "明天:".date("Y-m-d",strtotime("+1 day&

  • PHP下获取上个月、下个月、本月的日期(strtotime,date)

    今天写程序的时候,突然发现了很早以前写的获取月份天数的函数,经典的switch版,但是获得上月天数的时候,我只是把月份-1了,估计当时太困了吧,再看到有种毛骨悚然的感觉,本来是想再处理一下的,但是一想肯定还有什么超方便的方法,于是找到了下面这个版本,做了一点小修改. 获取本月日期: 复制代码 代码如下: function getMonth($date){     $firstday = date("Y-m-01",strtotime($date));     $lastday = da

  • JS版的date函数(和PHP的date函数一样)

    复制代码 代码如下: // 和PHP一样的时间戳格式化函数// @param  {string} format    格式// @param  {int}    timestamp 要格式化的时间 默认为当前时间// @return {string}           格式化的时间字符串function date ( format, timestamp ) {    var a, jsdate=((timestamp) ? new Date(timestamp*1000) : new Date

  • php中时间函数date及常用的时间计算

    曾在项目中需要使用到今天,昨天,本周,本月,本季度,今年,上周上月,上季度等等时间戳,趁最近时间比较充足,因此计划对php的相关时间知识点进行总结学习 1,阅读php手册date函数 常用时间函数: checkdate()验证一个时间是否正确 date_default_timezone_get()取得当前脚本所使用的时区 date_default_timezone_set()设定脚本所用时区  ini_set()也可以满足,或者修改配置文件 date_sunrise()  date_sunset

  • php Smarty date_format [格式化时间日期]

    Example 5-8. date_format[日期格式] index.php: 复制代码 代码如下: $smarty = new Smarty; $smarty->assign('yesterday', strtotime('-1 day')); $smarty->display('index.tpl'); index.tpl: {$smarty.now|date_format} {$smarty.now|date_format:"%A, %B %e, %Y"} {$s

  • php使用strtotime和date函数判断日期是否有效代码分享

    咋一想,判断日期是否有效应该是蛮简单的一个功能,但是细想起来还是有点麻烦的,因为既要检验格式,又要检验有效性.例如2013-02-29,虽然格式正确,但是日期无效:而2012-02-29格式正确,也有效. 一种方法可以使用正则,但是正则其实理解起来蛮麻烦的,而且使用正则在检验有效性方面也不太好.这里提供一个方法,主要是使用strtotime和date函数进行检验.直接上函数: 复制代码 代码如下: /** * 校验日期格式是否正确 *  * @param string $date 日期 * @p

  • 关于php程序报date()警告的处理(date_default_timezone_set)

    在写php程序中有时会出现这样的警告: PHP Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are stil

  • PHP date()函数警告: It is not safe to rely on the system解决方法

    近来总是有系统邮件提示,开始没在意,后来不断提示就看了一下.提示以下信息 复制代码 代码如下: PHP Warning:  date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of t

  • php中用date函数获取当前时间有误的解决办法

    初学PHP做网站,想在页面上获得当前时间,学过编程的人都知道用时间函数date(),先用这个函数格式化一个本地时间/日期,先写个测试代码吧,结果输出时间比实际时间少了8小时,这是什么原因呢: 复制代码 代码如下: <?php     echo date('Y-m-d H:i:s'); ?〉 输出当前时间:2008-10-12 02:32:17 怪了,实际时间是:2008-10-12 10:32:17 难道是PHP的date()时间不正确 少8个小时? 再看看PHP手册的"例子 1. dat

  • Jmeter中的timeshift()函数获取当前时间进行加减

    __TimeShift(格式,日期,移位,语言环境,变量): 可对日期进行移位加减操作 格式 - 将显示创建日期的格式. 如果该值未被传递,则以毫秒为单位创建日期. 日期 - 这是日期值.用于如果要通过添加或减去特定天数,小时或分钟来创建特定日期的情况.如果参数值未通过,则使用当前日期. 移位 -表示要从日期参数的值中添加或减去多少天,几小时或几分钟.如果该值未被传递,则不会将任何值减去或添加到日期参数的值中.如下所述: “PT20.345S”解析为“20.345秒” “PT15M”解析为“15

  • Oracle函数使索引列失效的解决办法

    在索引列上使用函数使得索引失效的是常见的索引失效原因之一,因此尽可能的避免在索引列上使用函数.尽管可以使用基于函数的索引来解决索引失效的问题,但如此一来带来的比如磁盘空间的占用以及列上过多的索引导致DML性能的下降.本文描述的是一个索引列上使用函数使其失效的案例. 一.数据版本与原始语句及相关信息 1.版本信息 SQL> select * from v$version; BANNER --------------------------------------------------------

  • PHP如何通过date() 函数格式化显示时间

    date() 函数 功能:用于格式化时间,返回一个字符串. 语法:string date( string format [, int timestamp] ),其中参数 format 表示时间格式化的方式:可选参数timestamp表示时间戳,默认为time(),即当前时间. 时间格式化的方式 格式化方式 说明 Y 4位数字年,y为2位数字,如99即1999年 m 数字月份,前面有前导0,如01.n 为无前导0数字月份 F 月份,完整的文本格式,例如 January 或者 March M 三个字

  • 浏览器跨域获取Lrc歌词数据的解决办法

    获取同一个域的数据,可以通过XMLHTTP组件或IFRAME来实现,不存在跨域访问的权限问题,因此比较简单.     但如果要访问不同域的数据时,由于浏览器的安全设置,XMLHTTP没有权限获取数据,而IFRAME没有权限将获取的数据传递给父窗口,似乎没有其它解决办法. 顿悟--     网页内引用不同域的脚本并不会提示权限不足,对了,就是它没错! 解决方法找到了,现在来简单测试一下: 首先在51js.com服务器上新建一页面(Test.html). Over-Domain Data Fetch

  • MSSQL报错:参数数据类型 text 对于 replace 函数的参数 1 无效的解决办法

    但是我们可以换一种方法解决这个问题.下面就来分析下解决办法. 对text或ntext类型的数据在查询中不能进行字符串操作.这时用得最多的是把text当作varchar(实际内容长度低于8000字节时)或把ntext当作nvarchar(实际内容长度低于4000字节时)来处理.但是这样处理也不是非常妥当毕竟如果text字段内容超过8000了岂不是要被截断或者忽略掉.最终找到了一种方法解决了"参数数据类型 text 对于 replace 函数的参数 1 无效"的问题.下面用一个例子来说明怎

  • PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法

    也许fsockopen.pfsockopen函数的确存在着安全的隐患,但是我们却已经无从考证,这都是IDC商说的,不管是什么原因吧,反正他们是把这两个函数禁用了,那么如何解决呢,下面是小编整理的方法,希望对用到的同学有一定的参考. 解决方法如下: 一.使用stream_socket_client()替代 服务器同时禁用了fsockopen.pfsockopen,那么用其他函数代替,如stream_socket_client().注意:stream_socket_client()和fsockope

  • php strftime函数获取日期时间(switch用法)

    strftime()函数的用法 strftime()函数可以把YYYY-MM-DD HH:MM:SS格式的日期字符串转换成其它形式的字符串. strftime()的语法是strftime(格式, 日期/时间, 修正符, 修正符, ...) 函数strftime()的操作有些类似于sprintf():识别以百分号(%)开始的格式命令集合,格式化输出结果放在一个字符串中.格式化命令说明串strDest中各种日期和时间信息的确切表示方法.格式串中的其他字符原样放进串中.格式命令列在下面,它们是区分大小

  • 使用C语言中的time函数获取系统时间

    可以通过time()函数来获得计算机系统当前的日历时间(Calendar Time),处理日期时间的函数都是以本函数的返回值为基础进行运算.其原型为:time_t time(time_t * t);如果你已经声明了参数t,你可以从参数t返回现在的日历时间,同时也可以通过返回值返回现在的日历时间,即从一个时间点(例如:1970年1月1日0时0分0秒)到现在此时的秒数.如果参数为空(NULL),函数将只通过返回值返回现在的日历时间,比如下面这个例子用来显示当前的日历时间: 复制代码 代码如下: #i

  • mysql函数日期和时间函数汇总

    目录 前言 获取当前日期的函数 获取当前时间的函数 获取当前日期和时间的函数 UNIX时间戳函数 返回UTC日期的函数 返回UTC时间的函数 获取月份的函数MONTH(date)和MONTHNAME(date) 获取星期的函数DAYNAME(d).DAYOFWEEK(d)和WEEKDAY(d) 获取星期的函数WEEK(d)和WEEKOFYEAR(d) 获取天数的函数DAYOFYEAR(d)和DAYOFMONTH(d) 获取年份.季度.小时.分钟和秒钟的函数 获取日期的指定值的函数EXTRACT(

随机推荐