日期时间操作一箩筐(php)

640?wx_fmt=png

格式化日期时间

date : 格式化日期时间

  • 场景

将当前日期时间或者特定日期时间格式化输出为特定格式的字符串,常用于人性化展示信息.

  • 说明

返回给定时间戳格式化后所产生的日期时间字符串,如果没有给出时间戳则默认使用本地当前时间.

  • 备注

640?wx_fmt=png

  • 常用格式

// 形如 2019-05-31 12:00:00	
echo date("Y-m-d H:i:s");	
// 形如 2019/05/31 12:00:00	
echo date("Y/m/d H:i:s");	
// 形如 2019年05月31日 12时00分00秒	
echo date("Y年m月d日 H时i分s秒");

  • 示例

<?php	
// 设置当前时区为上海时区	
date_default_timezone_set("Asia/Shanghai");	
// 获取当前时区 : Asia/Shanghai	
echo "当前时区 : ".date_default_timezone_get()."<br/>";	
// `Y年m月d日 H时i分s秒` 格式化当前时间 : 2019年05月30日 22时32分46秒	
echo "当前时间 : ".date("Y年m月d日 H时i分s秒")."<br/>";	
// `Y-m-d H:i:s` 格式化当前时间 : 2019-05-30 22:32:46	
echo "当前时间 : ".date("Y-m-d H:i:s")."<br/>";	
// `w` 星期中的第几天,数字表示: 0(表示星期天)到 6(表示星期六)	
switch (date("w")) {	
    case '0':	
        $dayStr = "日";	
        break;	
    case '1':	
        $dayStr = "一";	
        break;	
    case '2':	
        $dayStr = "二";	
        break;	
    case '3':	
        $dayStr = "三";	
        break;	
    case '4':	
        $dayStr = "四";	
        break;	
    case '5':	
        $dayStr = "五";	
        break;	
    case '6':	
        $dayStr = "六";	
        break;	
    default:	
        $dayStr = "未知";	
        break;	
} 	
// 2019年05月30日 星期四	
echo "当前时间 : ".date("Y年m月d日")." 星期".$dayStr."<br/>";	
echo "<hr/>";	
// `z` 年份中的第几天 : 今天是全年的第149天	
echo "今天是全年的第".date("z")."天<br/>";	
// `W` ISO-8601 格式年份中的第几周,每周从星期一开始 : 本周是全年的第22周	
echo "本周是全年的第".date("W")."周<br/>";	
// `t` 指定的月份有几天 : 本月共有31天	
echo "本月共有".date("t")."天<br/>";	
?>

日期转化时间戳

time : 返回当前的 Unix 时间戳

  • 场景

获取当前日期时间或特定日期时间的时间戳,常用于日期时间之间的相互转换.

  • 说明

返回自从 Unix 纪元(格林威治时间 197011 00:00:00)到当前时间的秒数.

  • 示例

<?php	
// 设置当前时区为上海时区	
date_default_timezone_set("Asia/Shanghai");	
// 获取当前时区	
echo "当前时区 : ".date_default_timezone_get()."<br/>";	
// 一周前的日期时间: 7 days; 24 hours; 60 mins; 60 secs	
$preWeek = time() - (7 * 24 * 60 * 60);	
echo "现在是".date("Y-m-d H:i:s").",上周是".date("Y-m-d H:i:s",$preWeek)."<br/>";	
// 一周后的日期时间: 7 days; 24 hours; 60 mins; 60 secs	
$nextWeek = time() + (7 * 24 * 60 * 60);	
echo "现在是".date("Y-m-d H:i:s").",下周是".date("Y-m-d H:i:s",$nextWeek)."<br/>";	
?>

microtime : 返回当前 Unix 时间戳和微秒数

  • 场景

获取当前日期时间或特定日期时间的时间戳,常用于程序运行过程打点分析,也可以用于日期时间之间的互相转换.

  • 说明

当前 Unix 时间戳以及微秒数,本函数仅在支持 `gettimeofday()`` 系统调用的操作系统下可用.

  • 示例

<?php	
// 设置当前时区为上海时区	
date_default_timezone_set("Asia/Shanghai");	
// 获取当前时区	
echo "当前时区 : ".date_default_timezone_get()."<br/>";	
// 当前日期时间戳	
echo "当前日期时间戳: ".time()." <--> ".microtime()." <--> ".microtime(TRUE)."<br/>";	
?>

mktime : 取得一个日期的 Unix 时间戳

  • 场景

获取给定日期的时间戳,按照 "时分秒 月日年"格式依次解析,返回时间戳.

  • 说明

根据给出的参数返回 Unix 时间戳.

  • 备注

640?wx_fmt=png

格式: 时分秒 月日年,支持从右往左依次省略,被省略的值取当前时间的对应值.

  • 示例

<?php	
// 设置当前时区为上海时区	
date_default_timezone_set("Asia/Shanghai");	
// 获取当前时区	
echo "当前时区 : ".date_default_timezone_get()."<br/>";	
// 指定日期时间戳: 时分秒 月日年 : 1559275200 <--> 2019-05-31 12:00:00	
echo "2019年05月31日 12:00:00 的时间戳: ".mktime(12,0,0,5,31,2019)." <--> ".date("Y-m-d H:i:s", mktime(12,0,0,5,31,2019))."<br/>";	
// 距离国庆节还有多少天,单位秒 : 今天是2019-05-31,距离国庆节还剩122天	
$nationalDay = mktime(0,0,0,10,1,2019);	
$currentDay = time();	
$remainingDay = floor(abs($nationalDay - $currentDay)/(24*3600));	
echo "今天是".date("Y-m-d").",距离国庆节还剩".$remainingDay."天<br/>";	
?>

strtotime : 将任何字符串的日期时间描述解析为 Unix 时间戳

  • 场景

将英文日期解析成时间戳,比直接解析日期方便,采用自然语义而不是编程语言进行转换日期.

  • 说明

本函数预期接受一个包含美国英语日期格式的字符串并尝试将其解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数,其值相对于 now 参数给出的时间,如果没有提供此参数则用系统当前时间.

  • 常用格式

// 2019-06-02	
echo date("Y-m-d", strtotime("2019-05-31 +2 days"));	
// 2019-07-01	
echo date("Y-m-d", strtotime("2019-05-31 +1 month"));	
// 2019-06-09	
echo date("Y-m-d", strtotime("2019-05-31 +1 week 2 days 4 hours 2 seconds"));

  • 示例

<?php	
// 设置当前时区为上海时区	
date_default_timezone_set("Asia/Shanghai");	
// 获取当前时区	
echo "当前时区 : ".date_default_timezone_get()."<br/>";	
// 当前日期时间戳	
echo "当前日期时间戳: ".time()." <--> ".strtotime("now")." <--> ".date("Y-m-d H:i:s", strtotime("now"))."<br/>";	
// 一周后的日期时间: 7 days; 24 hours; 60 mins; 60 secs	
$nextWeek = time() + (7 * 24 * 60 * 60);	
echo "现在是".date("Y-m-d H:i:s").",下周是".date("Y-m-d H:i:s",$nextWeek)." <--> ".date("Y-m-d H:i:s",strtotime("+1 week"))."<br/>";	
echo "现在是".date("Y-m-d H:i:s").",1周2天4小时2秒是".date("Y-m-d H:i:s",strtotime("+1 week 2 days 4 hours 2 seconds"))."<br/>";	
echo "现在是".date("Y-m-d H:i:s").",下周三是".date("Y-m-d H:i:s",strtotime("next Thursday"))."<br/>";	
?>

日期时间函总结

日期时间函数库是 php 内置的函数库,默认情况下已启用,值得注意的是,日期时间和时区有关,建议首先设置下时区.

纵观日期时间的操作方法,总的来说,可以大致分为两类,一类是给计算机用的,另一类是给人看的.

  • 给人看的

    • date_default_timezone_set("Asia/Shanghai") : 设置当前脚本使用的时区

    • date("Y-m-d H:i:s") : 格式化日期时间

    • date("Y-m-d", strtotime("2019-05-31 +2 days")) : 格式化英文描述的日期时间

  • 给计算机用的

    • time() : 当前时间的秒数

    • microtime() : 当前时间的秒数和微秒数

    • strtotime() : 将字符串形式的日期时间转换成时间戳

最后,文档那么齐全,不懂就去多看看,忘记有啥方法全靠 ide 智能提示就好,多用用就会慢慢熟练.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

snowdreams1006

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值