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

php函数date与gmdate的区别

PHP有2个时间格式化函数:date()和gmdate(),在官方的文档中的描述为date—格式化一个本地时间/日期gmdate—格式化一个GMTUTC日期/时间,返回的是格林威治标准时(GMT).举个例子,我...
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
当前位置:首页 > PHP教程 > php函数 > 列表
php函数date与gmdate的区别
发布: 来源:  添加日期:2014-09-14 22:07:48 浏览: 评论:0 

PHP有2个时间格式化函数:date()和gmdate(),在官方的文档中的描述为date — 格式化一个本地时间/日期gmdate — 格式化一个 GMT/UTC 日期/时间,返回的是格林威治标准时(GMT).

举个例子,我们现在所在的时区是+8,那么服务器运行以下脚本返回的时间应该是这样的:

当前时间假定是2007-03-14 12:15:27,代码如下:

echo date(‘Y-m-d H:i:s’, time()); 输出为:2007-03-14 12:15:27

echo gmdate(‘Y-m-d H:i:s’, time()); 输出为:2007-03-14 04:15:27

但是这只是在Linux+Apache下运行PHP所得的结果,如果在Windows下运行,则2个函数返回都是:2007-03-14 04:15:27。

PHP Date / Time 常量

PHP:指示支持该常量的最早的 PHP 版本。

常量 描述 PHP

DATE_ATOM 原子钟格式 (如: 2005-08-15T16:13:03+0000)   
DATE_COOKIE HTTP COOKIEs 格式 (如: Sun, 14 Aug 2005 16:13:03 UTC)   
DATE_ISO8601 ISO-8601 (如: 2005-08-14T16:13:03+0000)   
DATE_RFC822 RFC 822 (如: Sun, 14 Aug 2005 16:13:03 UTC)   
DATE_RFC850 RFC 850 (如: Sunday, 14-Aug-05 16:13:03 UTC)   
DATE_RFC1036 RFC 1036 (如: Sunday, 14-Aug-05 16:13:03 UTC)   
DATE_RFC1123 RFC 1123 (如: Sun, 14 Aug 2005 16:13:03 UTC)   
DATE_RFC2822 RFC 2822 (如: Sun, 14 Aug 2005 16:13:03 +0000)   
DATE_RSS RSS (如: Sun, 14 Aug 2005 16:13:03 UTC)   
DATE_W3C World Wide Web Consortium (如: 2005-08-14T16:13:03+0000)

所以,我们应该给一个兼容性的写法,统一使用gmdate,并手工设置当前时区,写法改进如下:

echo gmdate(‘Y-m-d H:i:s’, time() + 3600 * 8);

gmdate():返回的是当前 GMT标准时间的“自定义格式”时间,跟php系统设置的时区无关.

例子 1,当在中国(GMT +0800)运行以下程序时,第一行显示“Jan 01 2000 00:00:00”,而第二行显示“Dec 31 1999 16:00:00”,代码如下:

  1. echo date("M d Y H:i:s"mktime (0,0,0,1,1,2000)); 
  2. echo gmdate("M d Y H:i:s"mktime (0,0,0,1,1,2000)); 
  3. ?> 
  4. //输出: 
  5. //Jan 01 2000 00:00:00 
  6. //Dec 31 1999 16:00:00 

例子 2,代码如下:

  1. echo("Result with date():"); 
  2. echo(date("l") . ""); 
  3. echo(date("l dS of F Y h:i:s A") . ""); 
  4. echo("Oct 3,1975 was on a ".date("l"mktime(0,0,0,10,3,1975)).""); 
  5. echo(date(DATE_RFC822) . ""); 
  6. echo(date(DATE_ATOM,mktime(0,0,0,10,3,1975)) . ""); 
  7. echo("Result with gmdate():"); 
  8. echo(gmdate("l") . ""); 
  9. echo(gmdate("l dS of F Y h:i:s A") . ""); 
  10. echo("Oct 3,1975 was on a ".gmdate("l"mktime(0,0,0,10,3,1975)).""); 
  11. echo(gmdate(DATE_RFC822) . ""); 
  12. echo(gmdate(DATE_ATOM,mktime(0,0,0,10,3,1975)) . ""); 
  13. ?>//开源软件:phpfensi.com 
  14. //输出: 
  15. Result with date(): 
  16. Tuesday 
  17. Tuesday 24th of January 2006 02:41:22 PM 
  18. Oct 3,1975 was on a Friday 
  19. Tue, 24 Jan 2006 14:41:22 CET 
  20. 1975-10-03T00:00:00+0100 
  21. Result with gmdate(): 
  22. Tuesday 
  23. Tuesday 24th of January 2006 01:41:22 PM 
  24. Oct 3,1975 was on a Thursday 
  25. Tue, 24 Jan 2006 13:41:22 GMT 
  26. 1975-10-02T23:00:00+0000

推荐阅读
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • Windows环境下Oracle数据库迁移实践
    本文详细记录了一次在Windows操作系统下将Oracle数据库的控制文件、数据文件及在线日志文件迁移至外部存储的过程,旨在为后续的集群环境部署做好准备。 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • LoadRunner中的IP欺骗配置与实践
    为了确保服务器能够有效地区分不同的用户请求,避免多人使用同一IP地址造成的访问限制,可以通过配置IP欺骗来解决这一问题。本文将详细介绍IP欺骗的工作原理及其在LoadRunner中的具体配置步骤。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文概述了在GNU/Linux系统中,动态库在链接和运行阶段的搜索路径及其指定方法,包括通过编译时参数、环境变量及系统配置文件等方式来控制动态库的查找路径。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • Docker基础入门与环境配置指南
    本文介绍了Docker——一款用Go语言编写的开源应用程序容器引擎。通过Docker,用户能够将应用及其依赖打包进容器内,实现高效、轻量级的虚拟化。容器之间采用沙箱机制,确保彼此隔离且资源消耗低。 ... [详细]
  • 本文详细探讨了如何根据不同的应用场景选择合适的PHP版本,包括多版本切换技巧、稳定性分析及针对WordPress等特定平台的版本建议。 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 本文探讨了Java编程语言中常用的两个比较操作符==和equals方法的区别及其应用场景。通过具体示例分析,帮助开发者更好地理解和使用这两个概念,特别是在处理基本数据类型和引用数据类型的比较时。 ... [详细]
  • selenium通过JS语法操作页面元素
    做过web测试的小伙伴们都知道,web元素现在很多是JS写的,那么既然是JS写的,可以通过JS语言去操作页面,来帮助我们操作一些selenium不能覆盖的功能。问题来了我们能否通过 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
author-avatar
raymondxiao518
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有