0

0

PHP 时间与日期

php中文网

php中文网

发布时间:2016-06-20 12:51:26

|

1139人浏览过

|

来源于php中文网

原创

立即学习PHP免费学习笔记(深入)”;

      PHP提供了大量的内置函数,使开发人员在时间的处理上游刃有余,大大提高了工作效率。介绍一些常见的PHP日期和时间函数以及日期和时间的处理。


常用的日期和时间处理函数

立即学习PHP免费学习笔记(深入)”;

函 数

说  明

checkdate

验证时间函数,判断时间是否有效,有效返回true,否则返回false

date_default_timezone_get

取得脚本日期时间函数所使用的默认时区

date_default_timezone_set

设定日期时间函数的默认时区

date

格式化一个本地时间/日期

getdate

获取日期/时间信息

gettimeofday

获取当前时间

localtime

获取本地时间

microtime

返回当前时间戳和微秒数

mktime

取得一个UNIX时间戳

strtotime

将任何英文文本的日期时间描述解析为UNIX时间戳

time

返回当前的UNIX时间戳


系统时区设置

      在学习过程中发现通过date()函数获取到的时间跟本地时间不一样,这是由于PHP5对date()函数进行了重写,因此,目前的日期时间函数比系统时间少8个小时。在PHP语言中默认设置的是标准的格林威治时间(即采用的是零时区)。更改PHP语言中的时区设置主要有以下两种方法:
      1. 修改php.ini文件中的设置,找到[date]下的;date.timezone = 选项,将该项修改为date.timezone=Asia/Hong_Kong,然后重新启动apache服务器。
      2. 在应用程序中,使用时间日期函数之前添加如下函数:
      date_default_timezone_set(“Asia/Hong_Kong”);设置完成后,date()函数就可以正常使用了,不会再出现时差问题。


UNIX时间戳

      时间戳是文件属性中的创建、修改、访问时间。数字时间戳服务(digital time stamp service, DTS)是web网站安全服务项目之一,能提供电子文件的日期和时间信息的安全保护。

      时间戳是一个经加密后形成后的凭证文档,它包括3个部分:
      ²  需要添加时间戳的文件用Hash编码加密形成摘要。
      ²  DTS接受文件的日期和时间信息。
      ²  对接受的DTS文件加密。
      数字时间是由认证单位DTS来添加的,以DTS接收到文件的时间为依据。时间戳的作用原理是通过其他加密法将时间的数值转换为加密的数值,时间变化后加密的数值也随之变化。时间戳的优点是:变化的加密数值来防止数值被窃取后非法重复利用,也就起到了加密的作用。时间戳主要依赖于时间,在约定的一段时间内产生唯一的一个数值。


mktime()函数

      语法:
      int mktime(int hour, int minute, int month, int day, int year, int [is_dst])

立即学习PHP免费学习笔记(深入)”;

参  数

说  明

hour

小时数

minute

分钟数

second

简单的jQuery日期时间选择器
简单的jQuery日期时间选择器

一款简单的jQuery日期时间选择器插件,允许用户自由选择一个日期和时间,可自定义设置日期,简单实用,喜欢的不要错过。

下载

秒数(一分钟之内)

month

月份数

day

天数

year

年份数

is_dst

参数is_dst在夏令时可以被设置为1,如果不是则设置为0;如果不确定是否为夏令时则设置为-1(默认值)

      注意:有效的时间戳典型范围是格林尼治时间1901年12月13日20:45:54~2038年1月19日03:13:07(此范围符合32位有符号整数的最小值和最大值)。在Windows系统中此范围限制为从1970年1月1日~2038年1月19日。


date()函数

      date(string format,int timestamp)
      该函数将返回参数timestamp按照指定格式而产生的字符串。其中参数timestamp是可选的,如果省略,则使用当前时间。format参数可以使开发人员按其指定的格式输出时间日期。
      date_default_timezone_set(PRC);  //设置北京时间.

立即学习PHP免费学习笔记(深入)”;

format字符 说明 返回值例子
--- ---
d 月份中的第几天,有前导零的 2 位数字 01 到 31
D 星期中的第几天,文本表示,3 个字母 Mon 到 Sun
j 月份中的第几天,没有前导零 1 到 31
l("L"的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday
N ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)
S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th。可以和 j 一起用
w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)
z 年份中的第几天 0 到 365
星期 --- ---
W ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) 例如:42(当年的第 42 周)
--- ---
F 月份,完整的文本格式,例如 January 或者 March January 到 December
m 数字表示的月份,有前导零 01 到 12
M 三个字母缩写表示的月份 Jan 到 Dec
n 数字表示的月份,没有前导零 1 到 12
t 给定月份所应有的天数 28 到 31
--- ---
L 是否为闰年 如果是闰年为 1,否则为 0
o ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) Examples: 1999 or 2003
Y 4 位数字完整表示的年份 例如:1999 或 2003
y 2 位数字表示的年份 例如:99 或 03
时间 --- ---
a 小写的上午和下午值 am 或 pm
A 大写的上午和下午值 AM 或 PM
B Swatch Internet 标准时 000 到 999
g 小时,12 小时格式,没有前导零 1 到 12
G 小时,24 小时格式,没有前导零 0 到 23
h 小时,12 小时格式,有前导零 01 到 12
H 小时,24 小时格式,有前导零 00 到 23
i 有前导零的分钟数 00 到 59>
s 秒数,有前导零 00 到 59>
u 毫秒 (PHP 5.2.2 新加)。需要注意的是 date() 函数总是返回 000000 因为它只接受 integer 参数, 而 DateTime::format() 才支持毫秒。 示例: 654321
时区 --- ---
e 时区标识(PHP 5.1.0 新加) 例如:UTC,GMT,Atlantic/Azores
I 是否为夏令时 如果是夏令时为 1,否则为 0
O 与格林威治时间相差的小时数 例如:+0200
P 与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加) 例如:+02:00
T 本机所在的时区 例如:EST,MDT(【译者注】在 Windows 下为完整文本格式,例如"Eastern Standard Time",中文版会显示"中国标准时间")。
Z 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 -43200 到 43200
完整的日期/时间 --- ---
c ISO 8601 格式的日期(PHP 5 新加) 2004-02-12T15:19:21+00:00
r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200
U 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 参见 time()

getdate()函数

      该函数返回数组形式的日期时间信息,如果没有时间戳,则以当前时间为准。

立即学习PHP免费学习笔记(深入)”;

元  素

说  明

seconds

秒,返回值0~59

minutes

分钟,返回值为0~59

hours

小时,返回值为0~23

mday

月份中第几天,返回值为1~31

wday

星期中第几天,返回值为0(星期天)~6(星期六)

mon

月份数字,返回值为1~12

year

4位数字表示的完整年份,返回值加2000或2008

yday

一年中第几天,返回值0~365

weekday

星期几的完整文本表示,返回值为Sunday~Saturday

month

月份的完整文本表示,返回值为January~December

0

返回从UNIX纪元开始的秒数


比较两个时间的大小

      在实际开发中经常遇到判断两个时间的大小,PHP中的时间是不可以直接来进行比较的。所以,首先要将时间输出为时间戳的格式,然后再进行比较,这是常用到的方法。
      有两个函数都可以实现这个功能,这里使用strtotime()函数,该函数可以将任何英文文本的日期时间描述解析为UNIX时间戳。       该函数的语法为:
      int strtotime(string time, int now)
      该函数有两个参数。如果参数time的格式是绝对时间,则now参数不起作用;如果参数time的格式是相对时间,那么其对应的时间就是参数now来提供的,如果没有提供参数now,对应的时间就是当前时间。如果解析失败,则返回-1.


计算页面脚本的运行时间

      在浏览网站时,经常会用到搜索引擎,在搜索信息时,细心的用户会发现,在搜索结果的最下方,一般都有“搜索时间为……秒”的字样。这里使用到了microtime()函数,该函数返回当前UNIX时间戳和微秒数。返回格式为msec sec的字符串,其中sec是当前的UNIX时间戳,msec为微秒数。该函数的格式为:
      string microtime(void)
                            无标题文档                        ";                    // 当前时间到UNIX纪元的差值          echo time()."
"; // 格式化时间 echo date("Y-m-d H-i-s")."
"; // 时间数组 $arrays = getdate(); print_r($arrays)."
"; // 检测时间 var_dump( checkdate(7, 9, 2015) ); "
"; // 本地化时间戳,strtotime还可用于时间的大小比较 setlocale(LC_TIME, 0); echo strftime('%Y,%m,%d', strtotime('2000-04-00'))."
"; // 微妙 echo microtime(true); function run_time() { list($msec, $sec) = explode(" ", microtime()); return ((float)$msec + (float)$sec); } $start_time = run_time(); $time1 = strtotime(date( "Y-m-d H:i:s")); $time2 = strtotime("2008-2-3 17:10:00"); $time3 = strtotime("2008-8-8"); $sub1 = ceil(($time2 - $time1) / 3600); //60 * 60 $sub2 = ceil(($time3 - $time1) / 86400); //60 * 60 * 24 echo "离放假还有 $sub1 小时!!!" ; echo "

"; echo "离北京奥运开幕还有$sub2 天!!!"; $end_time = run_time(); echo '耗时'.($end_time - $start_time); ?>

来自:http://blog.csdn.net/aoshilang2249/article/details/46822105

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

c++ 字符串格式化
c++ 字符串格式化

本专题整合了c++字符串格式化用法、输出技巧、实践等等内容,阅读专题下面的文章了解更多详细内容。

9

2026.01.30

java 字符串格式化
java 字符串格式化

本专题整合了java如何进行字符串格式化相关教程、使用解析、方法详解等等内容。阅读专题下面的文章了解更多详细教程。

12

2026.01.30

python 字符串格式化
python 字符串格式化

本专题整合了python字符串格式化教程、实践、方法、进阶等等相关内容,阅读专题下面的文章了解更多详细操作。

4

2026.01.30

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

20

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

18

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

19

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

3

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 8.6万人学习

破釜沉舟,PHP 王者归来!
破釜沉舟,PHP 王者归来!

共5课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号