`
LeeYee
  • 浏览: 72323 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

strtotime方法使用前请注意系统时区

    博客分类:
  • PHP
 
阅读更多

strtotime在将一个潜在的时间字符串转换为正确的时间时,会使用到当前系统时区。如果系统时区与所给目标字符串所示时区不一样时,那么在调用后,其生成的时间将与想象中的时间有时间偏差。因此,需要在调用该方法前,首先确定当前系统时区。

 

我们可以调用date_default_timezone_get()获取当前时区。通常默认的时区为UTC也就是标准时区+0000;设置系统时区有两种方式:

1、修改php.ini配置文件。

[Date]
; Defines the default timezone used by the date functions
;date.timezone =

将上述部分的date.tiemzone放开,并设置为需要的时区

 

2、在需要设置时区的地方调用date_default_timezone_set()方法来设置时区。

 

下面我们就以"Sat May 14 22:35:44 +0800 2011"为例进行说明。我们的目标是获取其中的'22:35:44'时间。

 

可以看到'Sat May 14 22:35:44 +0800 2011'为+0800时区,也就是所谓的北京时间了。那么我们需要在strtotime该字符串前,确保系统时区为北京时区。PHP中北京时区可以用PRC表示。如果是PHP5+也可用Asia/Shanghai或者Asia/Chongqing来设置。

 

这里我们采用第二种方式来设置系统时区。我们的测试代码如下:

显示结果如下:

 

未设定时区前
时间字符串 Sat May 14 22:35:44 +0800 2011
当前时区 UTC
字符转化后日期格式('r') Sat, 14 May 2011 14:35:44 +0000
字符转化后日期格式('H:i:s') 14:35:44

 

设定时区后
时间字符串 Sat May 14 22:35:44 +0800 2011
当前时区 Asia/Shanghai
字符转化后日期格式('r') Sat, 14 May 2011 22:35:44 +0800
字符转化后日期格式('H:i:s') 22:35:44

注意: 在使用第二种方式时,在使用完成后,应将系统时区还原到初始设置。避免后续调用错误。

 

PS: 其他的时区设置及代码中涉及到的方法,可以通过查看PHP API了解更多的用法。http://www.php.net/manual/zh/index.php

分享到:
评论

相关推荐

    PHP中strtotime函数使用方法.docx

    在PHP编程语言中,strtotime()函数是一个非常实用的工具,它能够将人类可读的英文日期或时间描述转换为Unix时间戳。...理解并熟练使用strtotime()函数,将极大地提高编写日期和时间相关代码的效率。

    深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复

    开发者在使用strtotime()函数和其他与日期时间相关的函数时,需要明确设置时区,以避免警告信息的产生。这是因为依赖系统默认时区设置被认为是不安全的做法,特别是在运行在不同服务器上时可能会导致时间计算错误。 ...

    Javascript模仿php中strtotime()函数实现时间字符串转时间戳方法

    document.write(strtotime('now')); document.write(strtotime('next Sunday')); document.write(strtotime('last month')); document.write(strtotime('+1 weeks')); document.write(strtotime('+1 WEEK')); ...

    PHP中strtotime函数使用方法分享

    - **明天此时**: 使用`strtotime("+1 day")`可以获取当前时间的明天对应的Unix时间戳,然后通过`date()`函数将其转换回系统日期时间格式。 - **昨天此时**: 类似地,`strtotime("-1 day")`则表示昨天同一时刻的...

    PHP时间戳 strtotime()使用方法和技巧

    在php中我想要获取时间戳有多种方法,最常用的就是使用time函数与strtotime()函数把日期转换成时间戳了,下面我来给大家分享一下时间戳函数 strtotime用法。获取指定的年月日转化为时间戳:pHP时间戳函数获取指定...

    PHP中strtotime函数使用方法详解

    使用`strtotime()`函数可以轻松获取指定日期的Unix时间戳。例如,以下代码将获取2009年1月22日的Unix时间戳: ```php echo strtotime("2009-1-22"); ``` 这将输出:`1232553600`,对应于2009年1月22日0点0分0秒的...

    php使用date和strtotime函数输出指定日期的方法

    本文实例讲述了php使用date和strtotime函数输出指定日期的方法。分享给大家供大家参考。具体方法分析如下: 在php中date和strtotime函数都是对日期操作的,但是在生成上面date和strtotime是不一样的,一个是数字日期...

    PHP strtotime函数详解

    如果系统有设置时区(通过TZ环境变量),strtotime会将时间戳转换为时区相应的本地时间。 - 在PHP 5.1.0之后的版本,如果strtotime函数执行失败会返回FALSE,而在5.1.0之前的版本会返回-1。 - 在PHP 5.0及以后的版本...

    php 深入理解strtotime函数的使用详解

    `strtotime()` 在实际开发中常用于动态计算日期,比如生成报表、预约系统、日程安排等。结合 `date()` 函数,可以生成符合各种需求的日期时间格式。 理解并熟练运用 `strtotime()` 函数,可以有效地处理复杂的日期...

    PHP使用strtotime计算两个给定日期之间天数的方法

    需要注意的是,`strtotime`函数对日期格式的解析相当宽容,可以处理多种不同的日期表示方式,如'YYYY-MM-DD'、'MM/DD/YYYY'、'DD-MM-YYYY'等,甚至可以解析包含时间的部分,如'YYYY-MM-DD HH:MM:SS'。但并不是所有非...

    php中strtotime函数用法详解

    例如,如果我们想获取从今天起一个月后的Unix时间戳,可以这样使用strtotime函数: ```php $timeStamp = strtotime("now +1 month"); ``` 这里的字符串参数 `"now +1 month"` 就是描述我们要计算的未来时间。在PHP中...

    node-strtotime:节点StrToTime函数

    节点StrToTime函数。 这段代码是由从。 这是原始代码的简单分支,但主要区别在于未扩展Date.prototype范围。 例子 var strtotime = require('strtotime'); strtotime('1 week'); strtotime('next friday'); ...

    php中strtotime函数性能分析

    在PHP中,`strtotime()`函数是一个...总的来说,`strtotime()`在小规模或非性能敏感的场景下是很好的选择,但在处理大规模数据时,应谨慎使用,考虑使用更高效的比较方式或者优化数据处理流程,以提高整体系统的性能。

Global site tag (gtag.js) - Google Analytics