php中的两个常用的日期相关函数date和strtotime,相信大家一定不陌生。但我们平时使用都只是基本功能,什么时间戳变日期格式,日期格式变时间戳。

其实这两个函数还有更深的用法:

1、date函date(format,timestamp) format为格式,timestamp为时间戳(不填默认为当前时间戳)

关于format有许多选项:
(1)
  d 月份中的第几天,有前导零的 2 位数字 01 到 31 例如:date('d') 输出:07
  j 月份中的第几天,没有前导零 1 到 31 例如:date('j') 输出:7
  z 年份中的第几天 0 到 365
(2)星期
  D 星期中的第几天,文本表示,3 个字母 Mon 到 Sun
  l(“L”的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday
  N ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)
  S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th。可以和 j 一起用
  w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)
  W ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) 例如:42(当年的第 42 周)
(3)
  F 月份,完整的文本格式,例如 January 或者 March January 到 December
  n 数字表示的月份,没有前导零 1 到 12
  m 数字表示的月份,有前导零 01 到 12
  M 三个字母缩写表示的月份 Jan 到 Dec
  t 指定的月份有几天 28 到 31
(4)
  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
(5)时间
   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
(6)时区
  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
(7)完整的日期/时间
  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()一样
2、strtotime函数
strtotime(time,now);
time为规定的日期字符串,一般为YYYY-MM-DD H:i:s 2018-05-01 07:50:10
now为时间戳,规定用来计算返回值的时间戳。如果省略该参数,则使用当前时间。
echo(strtotime("now") ."<br>");//返回当前时间戳
echo(strtotime("15 October 1980") . "<br>");//返回指定日期时间戳
echo(strtotime("+5 hours") . "<br>"); //返回5个小时候的时间戳
echo(strtotime("+1 week") . "<br>");//返回一周后的现在
echo(strtotime("+1 week 3 days 7 hours 5 seconds") . "<br>");//返回一周后的现在再加三天7小时5秒后的时间戳
echo(strtotime("next Monday") . "<br>");//返回下一个星期一时间戳
echo(strtotime("last Sunday"));//返回上一个星期天时间戳

同样的还有

strtotime("-1 day");//昨天的现在时间戳

strtotime("+1 day");//明天的现在时间戳

特别注意,获取上个月的今天,上个月的最后一天,上个月的第一天

    echo date('Y-m-d', strtotime(date('Y-m-01') . ' -1 month')); // 计算出本月第一天再减一个月
echo date('Y-m-d', strtotime(date('Y-m-01') . ' -1 day')); // 计算出本月第一天再减一天
//获取当月第一天及最后一天.
echo date('Y-m-01',strtotime('0 day'));
echo date('Y-m-t', strtotime('0 day'));
//获取当天年份、月份、日及天数.
echo " 本月共有:".date("t")."天";
echo " 当前年份".date('Y');
echo " 当前月份".date('m');
echo " 当前几号".date('d'); /**
* 计算上一个月的今天,如果上个月没有今天,则返回上一个月的最后一天
* @param type $time
* @return type
*/
$time = strtotime("2018-07-31");
function last_month_today($time){
$last_month_time = mktime(date("G", $time), date("i", $time),date("s", $time), date("n", $time), 0, date("Y", $time));
$last_month_t = date("t", $last_month_time);
if ($last_month_t < date("j", $time)) {
return date("Y-m-t H:i:s", $last_month_time);
}
return date(date("Y-m", $last_month_time) . "-d", $time);
}
echo last_month_today($time);

mktime使用格式:

mktime(hour,minute,second,month,day,year,is_dst); 返回日期的时间戳(不是GMT日期,根据配置文件配置的时区)

gmmktime(hour,minute,second,month,day,year,is_dst); 返回日期的时间戳(是GMT日期,北京时间应该减8小时)

  
  
												

php中的date和strtotime函数妙用的更多相关文章

  1. mysql常用内置函数-查询语句中不能使用strtotime()函数!

    来自:http://yushine.iteye.com/blog/775407 FROM_UNIXTIME把 unix时间戳转换为标准时间 unix_timestamp把标准时间转换为 unix时间戳 ...

  2. PHP中strtotime函数使用方法分享

    在PHP中有个叫做strtotime的函数.strtotime 实现功能:获取某个日期的时间戳,或获取某个时间的时间戳.strtotime 将任何英文文本的日期时间描述解析为Unix时间戳[将系统时间 ...

  3. NET MVC全局异常处理(一) 【转载】网站遭遇DDoS攻击怎么办 使用 HttpRequester 更方便的发起 HTTP 请求 C#文件流。 Url的Base64编码以及解码 C#计算字符串长度,汉字算两个字符 2019周笔记(2.18-2.23) Mysql语句中当前时间不能直接使用C#中的Date.Now传输 Mysql中Count函数的正确使用

    NET MVC全局异常处理(一)   目录 .NET MVC全局异常处理 IIS配置 静态错误页配置 .NET错误页配置 程序设置 全局异常配置 .NET MVC全局异常处理 一直知道有.NET有相关 ...

  4. C#时间转整型(时间戳),模仿php strtotime函数的部分功能

    今天需要将一个基于MS SQL数据库的新闻系统数据导入phpcms v9,源系统新闻日期格式为"2014-01-15 10:45:49",而phpcms中使用的是整型时间戳,在ph ...

  5. 谨慎使用php的strtotime()函数

    我们在日常业务中,针对业务量,经常会采用对数据库按时间做横向分表,分表后的查询往往会涉及到时间问题.例如,我们想查询某个用户距离当前时间1个月的订单情况,在这个时候,我们有些会用到strtotime( ...

  6. (转载)PHP strtotime函数详解

    (转载)http://www.jb51.net/article/21495.htm strtotime函数是一个很好的函数,灵活的运用它,会给你的工作带来不少方便.但PHP的手册中却对此函数的参数没作 ...

  7. PHP用strtotime()函数比较两个时间的大小实例详解

    在PHP开发中,我们经常会对两个时间的大小进行判断,但是,在PHP中,两个时间是不可以直接进行比较,因为时间是由年.月.日.时.分.秒组成的,所以,如果需要将两个时间进行比较的话,我们首先要做的就是将 ...

  8. MYSQL中关于日期处理的函数

    < DOCTYPE HTML PUBLIC -WCDTD HTML TransitionalEN> MySQL数据库中SQL语句中 关于日期.时间\时间戳的函数   一 MySQL 获得当 ...

  9. 转 数据库中的 date datetime timestamp的区别

    转 数据库中的 date datetime timestamp的区别 DATETIME, DATE和TIMESTAMP类型是相关的.本文描述他们的特征,他们是如何类似的而又不同的. DATETIME类 ...

随机推荐

  1. SpringBoot28 RabbitMQ知识点、Docker下载RabbitMQ、SpringBoot整合RabbtiMQ

    1 RabbitMQ知识点 1.1 整体架构图 消息生产者将消息投递到exchange中,exchange会以某种路由机制将生产者投递的消息路由到queue中,消息消费者再从queue中获取消息进行消 ...

  2. Log4J的配置文件详解

    来自: http://www.blogjava.net/zJun/archive/2006/06/28/55511.html Log4J的配置文件(Configuration File)就是用来设置记 ...

  3. sudo问题汇总

    1. 注释Defaults requiretty Defaults requiretty修改为 #Defaults requiretty, 表示不需要控制终端. 否则会出现sudo: sorry, y ...

  4. 15- 1 << k 时的益出

    扩展GCD-时间复杂性 题目: 计算循环语句的执行频次 for (i = A; i != B; i += C) x += 1;其中A, B, C, i都是k位无符号整数. 输入: A B C k, 其 ...

  5. mybatis中使用懒加载实现一对多复杂查询

    1.包结构 2.pom配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&qu ...

  6. Python爬虫入门二之爬虫基础了解

    1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ...

  7. [欣赏代码片段] (JavaScript) 你使用过getComputedStyle没有

    (function() { // IE8 ployfill for GetComputed Style (for Responsive Script below) if (!window.getCom ...

  8. yii2项目实战-路由美化以及如何正确的生成链接

    yii2项目实战-路由美化以及如何正确的生成链接 更新于 2016年12月17日 by 白狼 被浏览了 705 次 美化路由 何为美化路由呢?美化嘛,无外乎就是给路由化化妆,让她好看点.我虽没化过妆, ...

  9. windows安装MongoDB进度条卡住,window安装mongo系统错误 2,系统错误5的解决办法(转载)

    windows安装MongoDB进度条卡住,window安装mongo系统错误 2,系统错误5的解决办法 转自:https://www.cnblogs.com/sufferingStriver/p/m ...

  10. 编写高质量代码改善C#程序的157个建议——建议131:用PascalCasing命名公开元素

    建议131:用PascalCasing命名公开元素 开放给调用者的属性.字段和方法都应该采用PascalCasing命名方法,比如: class Person { public string Firs ...