热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP中操作时区小结

最近有用户意见反馈说自己昨天还显示最近几天没有断签过,今天却有断签的记录,以为程序哪出错了,原来这个用户是在国外访问的,没有考虑时区的原因。php如何获取服务器所在的时区?获取默认时区e
最近有用户意见反馈说自己昨天还显示最近几天没有断签过,今天却有断签的记录,
以为程序哪出错了,原来这个用户是在国外访问的,没有考虑时区的原因。


php如何获取服务器所在的时区?

//获取默认时区
echo date_default_timezone_get();
一、关于PHP的时区设置方法:

1、修改php.ini
在php.ini中找到data.timezOne=去掉它前面的;号,
然后设置data.timezOne="Asia/Shanghai";即可。

2、在程序PHP 5以上版本的程序代码中使用函数

ini_set('date.timezone','Asia/Shanghai');

或者
  date_default_timezone_set('Asia/Shanghai');

一些常用的时区标识符说明:
Asia/Shanghai – 上海GMT+8:00
Asia/Chongqing – 重庆
Asia/Urumqi – 乌鲁木齐
Asia/Hong_Kong – 香港
Asia/Macao – 澳门
Asia/Taipei – 台北
Asia/Singapore – 新加坡

函数设置时区方法:
1.函数date_default_timezone_set()设置时区:
function_exists(date_default_timezone_set);//在这他总是返回1,这函数是判断这里面的字符是不是一个定义了的函数名
date_default_timezone_set("Etc/GMT");//这是格林威治标准时间,得到的时间和默认时区是一样的
date_default_timezone_set("Etc/GMT+8");//这里比林威治标准时间慢8小时
date_default_timezone_set("Etc/GMT-8");//这里比林威治标准时间快8小时
date_default_timezone_set('PRC'); //设置中国时区

2.函数ini_set()设置时区:
在文件开头加入
ini_set('date.timezone','Asia/Shanghai'); // 'Asia/Shanghai' 为上海时区

3.修改php.ini设置
打开php找到date.timezOne= "PRC" 如有去掉前面的分号,没有的话手动添加!

可能问题:
$atime = date("Y-m-d H:i:s");
echo $atime;//获取时间于本地时间相差很大
注意:
如果输出时间与本地时间有差别的话。
那可能就是假如你不在程序或配置文件中设置你的服务器当地时区
PHP所取的时间是格林威治标准时间,格林威治标准时间和北京时间大概差8个小时左右。
解决方法:
1.在页头使用date_default_timezone_set()
如设置我的默认时区为北京时间
代码如下:
date_default_timezone_set('PRC');
echo date('Y-m-d H:i:s');
时间和服务器当前时间一样了!

二、php转换GMT标准时间函数

GMT格林威治时间和本地的时间是有时差的, 我们知道php指定时区后用date()函数获取的是本地时间,
如果想获取标准的GMT 格林威治时间就要用gmdate()函数了.

我们也可以把本地的时间转换为格林威治时间GMT格式.
php获取GMT格式时间的方法:
echo gmdate("l d F Y H:i:s");//输出: Wednesday09 April 2014 03:53:36
如果后面要跟一个GMT标识:
echo gmdate("l d F Y H:i:s")." GMT"; //输出: Wednesday 09 April 2014 03:53:36 GMT
为什么要用GMT格式的时间呢?

比如我们要给网页设置缓存, 浏览这个网页的人有可能是上海的也有可能是美国的,

上海和美国是有时差的, 所以设置为GMT 格林威治时间标准时间是必要的.


php获取后一天时间的方法:
 echo gmdate ("l d F Y H:i:s",strtotime("+1 day"))." GMT";
这里的strtotime("+1 day")的意思就是明天这个时间,
如果要获取一周后可以这样 strtotime("+1 week"),
依此类推, 一月后用(+1month), 一年后用(+1 year)

三、CST转换为GMT时间

不清楚CST和GMT的可以点看这篇。

1.直接设置为
date_default_timezone_set('Etc/GMT');
$atime = date("Y-m-d H:i:s");
echo $atime;//获取设置时区的时间
2.自己封装了一个转换方法
//将其他时区的时间转化为GMT时区时间
function getTime($timezone) {

if(empty($timezone)) {
return time();
}
$time = strtotime(gmdate("Y-m-d H:i:s"));//GMT时间戳
$arr = explode(':',substr($timezone,4));
$h = intval($arr[0]);
$i = intval($arr[1]);
if(!strrpos($timezone,'+')) {
//减
$time1 = $time;
if($h>0){
$time1 = strtotime('-'.$h.' hour',$time1);
}
if($i>0){
$time1 = strtotime('-'.$i.' minutes',$time1);
}
}else{
//加
$time1 = $time;
if($h>0){
$time1 = strtotime('+'.$h.' hour',$time1);
}
if($i>0){
$time1 = strtotime('+'.$i.' minutes',$time1);
}
}
//转化为中国时区时间
//$time1 = strtotime('+8 hour',$time1);
return $time1;
}
$timezOne= 'GMT-12:00';//timezone时区格式
echo getTime($timezone);die;
附函数date_default_timezone_set() 用法如下:
------------------------------------------------------------------------------------
设置默认时区:
date_default_timezone_set("Asia/Shanghai");
echo date_default_timezone_get();
定义和用法

date_default_timezone_set() 函数设置脚本中所有日期/时间函数使用的默认时区。


语法

date_default_timezone_set(timezone);


参数     描述
timezone
必需。规定要使用的时区,比如 "UTC" 或 "Europe/Paris"。

技术细节
返回值:     如果 timezone 不合法则返回 FALSE,否则返回 TRUE。
PHP 版本:     5.1+
-------------------------------------------------------------------------------------

附函数strtotime() 用法如下:
-------------------------------------------------------------------------------------
将英文文本日期时间解析为 Unix 时间戳:
echo(strtotime("now") . "
");
echo(strtotime("15 October 1980") . "
");
echo(strtotime("+5 hours") . "
");
echo(strtotime("+1 week") . "
");
echo(strtotime("+1 week 3 days 7 hours 5 seconds") . "
");
echo(strtotime("next Monday") . "
");
echo(strtotime("last Sunday"));
定义和用法
strtotime() 函数将任何英文文本的日期或时间描述解析为 Unix 时间戳
(自 January 1 1970 00:00:00 GMT 起的秒数)。

注意:如果年份表示使用两位数格式,则值 0-69 会映射为 2000-2069,
值 70-100 会映射为 1970-2000。

注意:请注意 m/d/y 或 d-m-y 格式的日期,如果分隔符是斜线(/),
则使用美洲的 m/d/y 格式。如果分隔符是横杠(-)或者点(.),
则使用欧洲的 d-m-y 格式。为了避免潜在的错误,
您应该尽可能使用 YYYY-MM-DD 格式或者使用 date_create_from_format() 函数。

语法
strtotime(time,now);

参数     描述
time     必需。规定日期/时间字符串。
now     可选。规定用来计算返回值的时间戳。如果省略该参数,则使用当前时间。
返回值:     若成功则返回时间戳,失败则返回 FALSE。
PHP 版本:     4+
-------------------------------------------------------------------------------------
推荐阅读
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文介绍了关于smarty自定义缓存名的解决思路,通过放弃生成缓存,直接生成html的静态页面来提高速度。同时提供了一个参考链接供参考。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • PHP引用的概念和用法详解
    本文详细介绍了PHP中引用的概念和用法。引用是指不同的变量名访问同一个变量内容,类似于Unix文件系统中的hardlink。文章从引用的定义、作用、语法和注意事项等方面进行了解释和示例。同时还介绍了对未定义变量使用引用的情况,以及在函数和new运算符中使用引用的注意事项。 ... [详细]
  • MySQL数据库查询注意事项及查询命令详解
    本文介绍了在进行MySQL数据库查询时需要注意的地方,包括启动informix数据库的命令oninit,查询状态的命令onstat,以及相关的网址链接。同时还详细解释了oninit命令的用法和参数,包括初始化磁盘空间和共享内存、保留在线模式等。对于需要进行MySQL数据库查询的读者,本文提供了实用的查询命令和相关注意事项,帮助读者更好地进行数据库查询。 ... [详细]
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
author-avatar
手机用户2602901861
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有