格式化日期时间

date : 格式化日期时间

  • 场景

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

  • 说明

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

  • 备注
格式 说明 返回值示例
Y 4 位数字完整表示的年份 2019
y 2 位数字表示的年份 19
M 三个字母缩写表示的月份 Jan 到 Dec
m 数字表示的月份,有前导零 01 到 12
D 星期中的第几天,文本表示,3个字母 Mon 到 Sun
d 月份中的第几天,有前导零的 2 位数字 01 到 31
H 小时,24 小时格式,有前导零 00 到 23
h 小时,12 小时格式,有前导零 01 到 12
I 是否为夏令时 如果是夏令时为1 ,否则为 0
i 有前导零的分钟数 00 到 59
S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th ,可以和 j 一起用
s 秒数,有前导零 00 到 59
  • 常用格式
// 形如 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 纪元(格林威治时间 1970年1月1日 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 时间戳.

  • 备注
格式 说明 参数示例
H hour 小时数 00 到 23
i minute 分钟数 00 到 59
s second 秒数 00 到 59
n month 月份数 01 到 12
j day 天数 01 到 31
Y year 年份数,可以是两位或四位数字 0-69 对应于 2000-2069 ,70-100 对应于 1970-2000

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

  • 示例
<?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 智能提示就好,多用用就会慢慢熟练.

转载于:https://www.cnblogs.com/snowdreams1006/p/10955177.html

php 学习笔记之日期时间操作一箩筐相关推荐

  1. php日期源码,php学习笔记之日期时间函数-PHP源码

    本文章来给各位朋友详细介绍关于在php学日期时间函数的一些用法与参数介绍,php支持的时间函数有很多,例如:getdate().mktime().gmdate()等等,下面我来给大家介绍有兴趣的朋友可 ...

  2. Excel学习笔记5||日期时间函数NOW、DATE、DATEDIF、WEEKDAY... ...

    备注:该博客内容根据技术教学视频整理与总结而成,教学视频来自于office教程-龙龙老师的Excel2019视频教程合集(81节). 一.日期和时间的基础知识 有效日期 1900/1/1 9999/1 ...

  3. lua学习笔记之日期时间

    有两种表现形式,一种是通过数字,另外一种方式是通过日期表:year,month,day,hour,min,sec.wday,yday,isdst 1.函数 1.1 os.time print(os.t ...

  4. Vue学习笔记:Element时间控件设置某一个日期禁止选择

    Vue学习笔记:Element时间控件添加一段时间禁止选择 需求:时间控件,当天之前禁止选择,某一个日期的之前时间禁止选择 文档: 代码实现:在时间控件上添加 :picker-options=&quo ...

  5. Hive学习笔记三之函数操作

    文章目录 5 函数 5.1 系统内置函数 5.2 常用内置函数 5.2.1 空字段赋值 5.2.2 CASE WHEN THEN ELSE END(类似于java中的switch case) 5.2. ...

  6. C# 学习笔记(19)操作SQL Server下

    C# 学习笔记(19)操作SQL Server下 ADO.net操作数据库 这应该是比较老的技术了,以后有空的话学学 Linq /// <summary> /// 数据库使用类 /// & ...

  7. C# 学习笔记(18)操作SQL Server 中

    C# 学习笔记(18)操作SQL Server 中 数据库基础操作 SQL语法可以参考 菜鸟教程 或者微软官方的SQL示例 注意SQL不区分大小写 查 1.基础查询 --最基础的查询语句, selec ...

  8. mysql日期时间操作函数详解

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. win7可以设定每周从哪一天开始,win2003等不能方便的修改.有的是周日开始,有的是周一开始.而 ...

  9. mysql concat 日期_MySQL tips (日期时间操作/concat 等)

    1.  Query结尾要加一个分号: 2.  数据库和表 SHOW DATABASES;    USE YOUR_DB; SHOW TABLES; SHOW COLUMNS FROM study或者D ...

  10. Firebird日期时间操作

    最近在使用Firebird数据做 一项目,使用FireBird边用边学.(以下转贴) 查询2007年度以后的,12月份以上的数据记录,datetime为timestamp字段 select * fro ...

最新文章

  1. Mysql中where条件一个单引号引发的性能损耗
  2. WINSOCK网络函数
  3. redis的四大特性和原理
  4. 解密OpenShift内部通信网络
  5. 什么是CloudComputing
  6. Office for Mac升级提醒如何去掉?关闭Mac的Microsoft AutoUpdate弹框提示
  7. php中多重继承,PHP如何使用接口实现多重继承?(代码示例)
  8. 关于websql语法
  9. 魅族发布两款新品:魅蓝 X 1699元起
  10. Spark (一):大数据概述
  11. get busy trying or get busy dying
  12. EMV交易中的SDA/DDA/CDA——SDA部分
  13. php怎么给视频加水印,视频怎么加水印 添加文字水印和图片水印 给视频加水印的软件...
  14. 许久没更新,安装Python第三方库python-docx都困难系列(统信UOS)
  15. 腾讯云视频点播-java sdk 批量修改视频分类
  16. 力扣题解-977. 有序数组的平方
  17. VB中实现IObjectSafety接口以声明控件安全的方法
  18. 老夫金钟罩铁布衫纵横江湖数十年
  19. 传美光科技竞标尔必达获胜 收购金额25亿美元
  20. linux双屏原理,Linux下双屏显示设置

热门文章

  1. 基于Java的体育场地预约系统
  2. python web异步_如何使用python中的理解来批处理异步web请求?
  3. php图片处理-补全图片链接,在链接前添加ip或其他路径-在正则匹配到的字符串前添加指定字符串
  4. mmh学长的实验器材
  5. 协作,才能更好的中断线程
  6. mac 版 SourceTree(git 客户端)跳过登录验证
  7. Matter-JS constraint 约束
  8. 使用 concurrently 并行地运行多个命令(同时跑前端和后端的服务)
  9. 阶段3 2.Spring_06.Spring的新注解_2 spring的新注解-Bean
  10. 阶段3 2.Spring_03.Spring的 IOC 和 DI_5 BeanFactory和ApplicationContext的区别