搜索
首页后端开发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])

参  数

说  明

hour

小时数

minute

分钟数

second

秒数(一分钟之内)

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);  //设置北京时间.

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()函数

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

元  素

说  明

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)
    <!doctype html>      <html>      <head>      <meta charset="utf-8">      <title>无标题文档</title>      </head>            <body>      <?php          // 设置时区          date_default_timezone_set('Asia/Chongqing');                    // 指定时间到UNIX纪元的差值          echo mktime(1, 2, 3, 4, 5, 2006)."<br>";                    // 当前时间到UNIX纪元的差值          echo time()."<br>";                    // 格式化时间          echo date("Y-m-d H-i-s")."<br>";                    // 时间数组          $arrays = getdate();          print_r($arrays)."<br>";                    // 检测时间          var_dump( checkdate(7, 9, 2015) );                    "<br>";                    // 本地化时间戳,strtotime还可用于时间的大小比较          setlocale(LC_TIME, 0);          echo strftime('%Y,%m,%d', strtotime('2000-04-00'))."<br>";                    // 微妙          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 "离放假还有<font color=red> $sub1 </font>小时!!!" ;           echo "<p>";          echo "离北京奥运开幕还有<font color=red>$sub2 </font>天!!!";          $end_time = run_time();          echo '耗时'.($end_time - $start_time);          ?>      </body>      </html>  
来自:http://blog.csdn.net/aoshilang2249/article/details/46822105
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何使PHP应用程序更快如何使PHP应用程序更快May 12, 2025 am 12:12 AM

tomakephpapplicationsfaster,关注台词:1)useopcodeCachingLikeLikeLikeLikeLikePachetoStorePreciledScompiledScriptbyTecode.2)MinimimiedAtabaseSqueriSegrieSqueriSegeriSybysequeryCachingandeffeftExting.3)Leveragephp7 leveragephp7 leveragephp7 leveragephpphp7功能forbettercodeefficy.4)

PHP性能优化清单:立即提高速度PHP性能优化清单:立即提高速度May 12, 2025 am 12:07 AM

到ImprovephPapplicationspeed,关注台词:1)启用opcodeCachingwithapCutoredUcescriptexecutiontime.2)实现databasequerycachingusingpdotominiminimizedatabasehits.3)usehttp/2tomultiplexrequlexrequestsandredececonnection.4 limitsclection.4.4

PHP依赖注入:提高代码可检验性PHP依赖注入:提高代码可检验性May 12, 2025 am 12:03 AM

依赖注入(DI)通过显式传递依赖关系,显着提升了PHP代码的可测试性。 1)DI解耦类与具体实现,使测试和维护更灵活。 2)三种类型中,构造函数注入明确表达依赖,保持状态一致。 3)使用DI容器管理复杂依赖,提升代码质量和开发效率。

PHP性能优化:数据库查询优化PHP性能优化:数据库查询优化May 12, 2025 am 12:02 AM

databasequeryOptimizationinphpinvolVolVOLVESEVERSEVERSTRATEMIESOENHANCEPERANCE.1)SELECTONLYNLYNESSERSAYCOLUMNSTORMONTOUMTOUNSOUDSATATATATATATATATATATRANSFER.3)

简单指南:带有PHP脚本的电子邮件发送简单指南:带有PHP脚本的电子邮件发送May 12, 2025 am 12:02 AM

phpisusedforsenderemailsduetoitsbuilt-inmail()函数andsupportiveLibrariesLikePhpMailerandSwiftMailer.1)usethemail()functionforbasicemails,butithasimails.2)butithasimimitations.2)

PHP性能:识别和修复瓶颈PHP性能:识别和修复瓶颈May 11, 2025 am 12:13 AM

PHP性能瓶颈可以通过以下步骤解决:1)使用Xdebug或Blackfire进行性能分析,找出问题所在;2)优化数据库查询并使用缓存,如APCu;3)使用array_filter等高效函数优化数组操作;4)配置OPcache进行字节码缓存;5)优化前端,如减少HTTP请求和优化图片;6)持续监控和优化性能。通过这些方法,可以显着提升PHP应用的性能。

PHP的依赖注入:快速摘要PHP的依赖注入:快速摘要May 11, 2025 am 12:09 AM

依赖性注射(DI)InphpisadesignPatternthatManages和ReducesClassDeptions,增强量产生性,可验证性和Maintainability.itallowspasspassingDepentenciesLikEdenceSeconnectionSeconnectionStoclasseconnectionStoclasseSasasasasareTers,interitationApertatingAeseritatingEaseTestingEasingEaseTeStingEasingAndScalability。

提高PHP性能:缓存策略和技术提高PHP性能:缓存策略和技术May 11, 2025 am 12:08 AM

cachingimprovesphpermenceByStorcyResultSofComputationsorqucrouctationsorquctationsorquickretrieval,reducingServerLoadAndenHancingResponsetimes.feftectivestrategiesinclude:1)opcodecaching,whereStoresCompiledSinmememorytssinmemorytoskipcompliation; 2)datacaching datacachingsingMemccachingmcachingmcachings

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具