PHP 日期时间函数的高级应用技巧


Posted in PHP onOctober 10, 2009

PHP的日期时间函数date()

1,年-月-日

echo date('Y-m-j');
2007-02-6
echo date('y-n-j');
07-2-6
大写Y表示年四位数字,而小写y表示年的两位数字;
小写m表示月份的数字(带前导),而小写n则表示不带前导的月份数字。
echo date('Y-M-j');
2007-Feb-6
echo date('Y-m-d');
2007-02-06
大写M表示月份的3个缩写字符,而小写m则表示月份的数字(带前导0);
没有大写的J,只有小写j表示月份的日期,无前导o;若需要月份带前导则使用小写d。
echo date('Y-M-j');
2007-Feb-6
echo date('Y-F-jS');
2007-February-6th
大写M表示月份的3个缩写字符,而大写F表示月份的英文全写。(没有小写f)
大写S表示日期的后缀,比如“st”、“nd”、“rd”和“th”,具体看日期数字为何。
小结:
表示年可以用大写的Y和小写y;
表示月可以用大写F、大写M、小写m和小写n(分别表示字符和数字的两种方式);
表示日可以用小写d和小写j,大写S表示日期的后缀。

2,时:分:秒

默认情况下,PHP解释显示的时间为“格林威治标准时间”,与我们本地的时间相差8个小时。
echo date('g:i:s a');
5:56:57 am
echo date('h:i:s A');
05:56:57 AM

小写g表示12小时制,无前导0,而小写h则表示有前导0的12小时制。
当使用12小时制时需要表明上下午,小写a表示小写的“am”和“pm”,大写A表示大写的“AM”和“PM”。
echo date('G:i:s');
14:02:26
大写G表示24小时制的小时数,但是不带前导的;使用大写的H表示带前导的24小时制小时数
小结:
字母g表示小时不带前导,字母h表示小时带前导;
小写g、h表示12小时制,大写G、H表示24小时制。

3,闰年、星期、天

echo date('L');
今年是否闰年:0
echo date('l');
今天是:Tuesday
echo date('D');
今天是:Tue
大写L表示判断今年是否闰年,布尔值,为真返回1,否则为0;
小写l表示当天是星期几的英文全写(Tuesday);
而使用大写D表示星期几的3个字符缩写(Tue)。
echo date('w');
今天星期:2
echo date('W');
本周是全年中的第 06 周
小写w表示星期几,数字形式表示
大写W表示一年中的星期数
echo date('t');
本月是 28 天
echo date('z');
今天是今年的第 36 天
小写t表示当前月份又多少天
小写z表示今天是本年中第几天

4,其他

echo date('T');
UTC
大写T表示服务器的时间区域设置
echo date('I');
0
大写I表示判断当前是否为夏令时,为真返回1,否则为0
echo date('U');
1170769424
大写U表示从1970年1月1日到现在的总秒数,就是Unix时间纪元的UNIX时间戳。
echo date('c');
2007-02-06T14:24:43+00:00
小写c表示ISO8601日期,日期格式为YYYY-MM-DD,用字母T来间隔日期和时间,时间格式为HH:MM:SS,时区使用格林威治标准时间(GMT)的偏差来表示。
echo date('r');
Tue, 06 Feb 2007 14:25:52 +0000
小写r表示RFC822日期。

小小的date()函数就显示出了PHP的强大功能和迷人魅力,再比较下ASP,呵呵。
checkdate($month,$date,$year)
如果应用的值构成一个有效日期,则该函数返回为真。例如,对于错误日期2005年2月31日,此函数返回为假。
在日期用于计算或保存在数据库中之前,可用此函数检查日期并使日期生效。

<?php 
// returns false 
echo checkdate(2,30,2005) ? "valid" : "invalid"; 
// returns true 
echo checkdate(4,6,2010) ? "valid" : "invalid"; 
?>

getdate($ts)
在没有自变量的情况下,该函数以结合数组的方式返回当前日期与时间。数组中的每个元素代表日期/时间值中的一个特定组成部分。可向函数提交可选的时间标签自变量,以获得与时间标签对应的日期/时间值。
应用此函数来获得一系列离散的,容易分离的日期/时间值。

<?php 
// get date as associative array 
$arr = getdate(); 
echo "Date is " . $arr['mday'] . " " . $arr['weekday'] . " " . $arr['year']; 
echo "Time is " . $arr['hours'] . ":" . $arr['minutes']; 
?>

mktime($hour, $minute, $second, $month, $day, $year)
此函数的作用与getdate()的作用相反:它由一系列的日期与时间值生成一个UNIX时间标签(GMT时间1970年1月1日到现在消逝的秒数)。不用自变量时,它生成当前时间的UNIX时间标签。
用此函数获得即时时间的UNIX时间标签。这种时间标签通常用于许多数据库与程序语言中。

<?php 
// returns timestamp for 13:15:23 7-Jun-2006 
echo mktime(13,15,23,6,7,2006); 
?>

date($format, $ts)
此函数将UNIX时间标签格式化成一个可人为阅读的日期字符串。它是PHP日期/时间API中功能最为强大的函数,可用在一系列的修正值中,将整数时间标签转变为所需的字符串格式。
为显示格式化时间或日期时,应用此函数。

<?php 
// format current date 
// returns "13-Sep-2005 01:16 PM" 
echo date("d-M-Y h:i A", mktime()); 
?>

strtotime($str)
此函数将可人为阅读的英文日期/时间字符串转换成UNIX时间标签。
应用此函数将非标准化的日期/时间字符串转换成标准、兼容的UNIX时间标签。

<?php 
// returns 13-Sep-05 
echo date("d-M-y", strtotime("today")); 
// returns 14-Sep-05 
echo date("d-M-y", strtotime("tomorrow")); 
// returns 16-Sep-05 
echo date("d-M-y", strtotime("today +3 days")); 
?>

strftime($format,$ts)
如前面的setlocale()函数定义的那样,此函数将UNIX时间标签格式化成适用于当前环境的日期字符串。
应用此函数建立与当前环境兼容的日期字符串。

<?php 
// set locale to France (on Windows) 
setlocale(LC_TIME, "fra_fra"); 
// format month/day names 
// as per locale setting 
// returns "septembre" and "mardi" 
echo strftime("Month: %B "); 
echo strftime("Day: %A "); 
?>

microtime()
如前面的setlocale()函数定义的那样,此函数将UNIX时间标签格式化成适用于当前环境的日期字符串。
应用此函数建立与当前环境兼容的日期字符串。

<?php 
// get starting value 
$start = microtime(); 
// run some code 
for ($x=0; $x<1000; $x++) { 
$null = $x * $x; 
} 
// get ending value 
$end = microtime(); 
// calculate time taken for code execution 
echo "Elapsed time: " . ($end - $start) ." sec"; 
?>

gmmktime($hour, $minute, $second, $month, $day, $year)
此函数由一系列用GMT时间表示的日期与时间值生成一个UNIX时间标签。不用自变量时,它生成一个当前GMT即时时间的UNIX时间标签。
用此函数来获得GMT即时时间的UNIX时间标签。

<?php 
// returns timestamp for 12:25:23 9-Jul-2006 
echo gmmktime(12,25,23,7,9,2006); 
?>

gmdate($format, $ts)
此函数将UNIX时间标签格式化成可人为阅读的日期字符串。此日期字符串以GMT(非当地时间)表示。
用GMT表示时间标签时应用此函数。

<?php 
// format current date into GMT 
// returns "13-Sep-2005 08:32 AM" 
echo gmdate("d-M-Y h:i A", mktime()); 
?>

date_default_timezone_set($tz)、date_default_timezone_get()
此函数此后所有的日期/时间函数调用设定并恢复默认的时区。
注:此函数仅在PHP 5.1+中有效。
此函数是一个方便的捷径,可为以后的时间操作设定时区。

<?php 
// set timezone to UTC 
date_default_timezone_set('UTC'); 
?>

三水点靠木小编补充:真正的干货在这里了

<?php 
header('Content-Type: text/html; charset=utf-8'); 
 
//PHP时间戳函数获取指定日期的unix时间戳 
echo strtotime('2018-1-19').PHP_EOL; 
echo time().PHP_EOL; 
 
//PHP时间戳函数获取英文文本日期时间 
echo date('Y-m-d H:i:s', 1516291200).PHP_EOL; 
echo date('Y-m-d H:i:s', time()).PHP_EOL; 
 
//打印明天此时的时间戳 
echo date('Y-m-d H:i:s',strtotime('+1 day')).PHP_EOL; 
 
//打印昨天此时的时间戳 
echo date('Y-m-d H:i:s',strtotime('-1 day')).PHP_EOL; 
 
//打印下个星期此时的时间戳 
echo date('Y-m-d H:i:s',strtotime('+1 week')).PHP_EOL; 
 
//打印上个星期此时的时间戳 
echo date('Y-m-d H:i:s',strtotime('-1 week')).PHP_EOL; 
 
//打印指定下星期几的时间戳 
echo date('Y-m-d H:i:s',strtotime('next Thursday')).PHP_EOL; 
 
//打印指定上星期几的时间戳 
echo date('Y-m-d H:i:s',strtotime('last Thursday')).PHP_EOL; 
 
//时间戳获取年月日时分秒 
$datetimeArr = getdate(1516329995); 
$hours = $datetimeArr["hours"]; 
$minutes = $datetimeArr["minutes"]; 
$seconds = $datetimeArr["seconds"]; 
$month = $datetimeArr["mon"]; 
$day = $datetimeArr["mday"]; 
$year = $datetimeArr["year"]; 
echo "year:$year\nmonth:$month\nday:$day\nhour:$hours\nminutes:$minutes\nseconds:$seconds\n"; 
 
//日期时间截取年月日 
$datetime = date('Y-m-d H:i:s', 151641111119); 
echo ((int)substr($datetime,0,4)).PHP_EOL;;//获取年份 
echo ((int)substr($datetime,5,2)).PHP_EOL;;//获取月份 
echo ((int)substr($datetime,8,2)).PHP_EOL;;//获取日份

运行效果图:

PHP 日期时间函数的高级应用技巧

PHP 相关文章推荐
一个程序下载的管理程序(三)
Oct 09 PHP
PHP编实现程动态图像的创建代码
Sep 28 PHP
简单分析ucenter 会员同步登录通信原理
Aug 25 PHP
教你如何开启shopnc b2b2c 伪静态
Oct 21 PHP
php商品对比功能代码分享
Sep 24 PHP
深入浅析php中sprintf与printf函数的用法及区别
Jan 08 PHP
PHP中set_include_path()函数相关用法分析
Jul 18 PHP
PHP入门教程之操作符与控制结构流程详解
Sep 09 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
Jul 03 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
Laravel框架实现定时发布任务的方法
Aug 16 PHP
PHP 日期加减的类,很不错
Oct 10 #PHP
全世界最小的php网页木马一枚 附PHP木马的防范方法
Oct 09 #PHP
PHP 字符串分割和比较
Oct 06 #PHP
PHP parse_url 一个好用的函数
Oct 03 #PHP
php面向对象全攻略 (十七) 自动加载类
Sep 30 #PHP
php面向对象全攻略 (十六) 对象的串行化
Sep 30 #PHP
php面向对象全攻略 (十五) 多态的应用
Sep 30 #PHP
You might like
fleaphp下不确定的多条件查询的巧妙解决方法
2008/09/11 PHP
php 中文和编码判断代码
2010/05/16 PHP
ThinkPHP中U方法的使用浅析
2014/06/13 PHP
深入解析PHP的Yii框架中的缓存功能
2016/03/29 PHP
PHP实现一个多功能购物网站的案例
2017/09/13 PHP
php 数据结构之链表队列
2017/10/17 PHP
php通过各种函数判断0和空
2020/07/04 PHP
网页自动跳转代码收集
2009/09/27 Javascript
页面中js执行顺序
2009/11/09 Javascript
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
javascript 分号总结及详细介绍
2016/09/24 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
深入理解JavaScript中的for循环
2017/02/07 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
vue和H5 draggable实现拖拽并替换效果
2020/07/29 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
python 中文乱码问题深入分析
2011/03/13 Python
Python多线程和队列操作实例
2015/06/21 Python
Python中pymysql 模块的使用详解
2019/08/12 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
keras实现图像预处理并生成一个generator的案例
2020/06/17 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
2020/10/19 Python
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
财务会计专业应届毕业生求职信
2013/10/18 职场文书
会计专业自我鉴定
2014/02/10 职场文书
小学学校评估方案
2014/06/08 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
公安个人四风问题对照检查及整改措施
2014/10/28 职场文书
2014年乡镇纪委工作总结
2014/12/19 职场文书
2014年变电站工作总结
2014/12/19 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书