php中时间函数date及常用的时间计算


Posted in PHP onMay 12, 2017

曾在项目中需要使用到今天,昨天,本周,本月,本季度,今年,上周上月,上季度等等时间戳,趁最近时间比较充足,因此计划对php的相关时间知识点进行总结学习

1,阅读php手册date函数

常用时间函数:

checkdate()验证一个时间是否正确

date_default_timezone_get()取得当前脚本所使用的时区

date_default_timezone_set()设定脚本所用时区  ini_set()也可以满足,或者修改配置文件

date_sunrise()  date_sunset() 返回给定的日期和地点的日出时间和日落时间

date()格式化一个日期,下边会有详细内容

getdate() 取得日期时间的相关信息

gettimeofday()取得当前时间的相关信息

idate()将本地时间日期格式化为整数,但只接受一个字符作为参数

microtime()返回当前的时间戳和秒数

mktime()取得一个日期的时间戳

strtotime()将英文文本的日期秒数解析为时间戳

2,重要函数详解

date()格式化一个日期

string date( string $format [, int $timestamp] )

d

月份中的第几天,也就是几号,此为具有前导零,例如01,02

D

星期中的第几天,也就是英文星期几的单词缩写,Mon到Sun

l(L小写) 星期几,此为完整的英文格式, Sunday到Saturday

N

用数字表示星期几,1为星期一,7为星期日

S

每月天数后面的英文后缀

w

星期中的第几天,使用数字表示,0为星期天,6为星期六

z

年份中的第几天 0到365

W

年份中的第几周

F

月份,完整的英文单词

m

月份数字格式,具有前导0

M

三个字母表示的缩写的月份

n

数字表示的月份,没有前导0

t

给定月份所应有的天数

L

检测是否为闰年,闰年为1,月份为0

Y

4位数字表示的年份

y

2位数字表示的年份

a

小写的上午或者下午的值

A

大写的上午或者下午的值

g

12小时制,没有前导0

G

24小时制,没有前导0

h

12小时制,有前导0

H

24小时制,有前导0

i

具有前导0的分钟数

s

秒数,具有前导0

u

毫秒,date()函数返回的是000000格式的

e

时区标识

I

是否为夏令时,是为1,不是为0

T

本机所在的时区

c

2017-05-08T 15:22:21+00:00 格式的时间

U

从1970开始至今的秒数

idate()函数详解

与date的区别是此函数只可以传递一个参数,date()可以传递多个参数

B

Internet time

d

月份中的第几天

h

12小时制的时间

H

24小时制的时间

i

分钟

I

若启用夏令时返回1,否则为0

L

如果是闰年则返回1,否则返回0

m

月份的数字

s

秒数

t

本月的总天数

U

从1970起的秒数

w

星期中的第几天

W

年份中的第几个星期,星期从星期一开始

y

年份,1或者2位数字

Y

年份4位数字

z

年份中的第几天

Z

以秒为单位的时区偏移量

strtotime()函数衔接

用法示例

strtotime ("now");

strtotime ("10 September 2017");

strtotime ("+1 day");

strtotime ("+1 week");

strtotime ("+1 week 2 days 4 hours 2 seconds");

strtotime ("next Thursday");
strtotime ("last Monday");

3,常用时间汇总

$times = [];
function makeTime(){
  //获取今日开始时间戳和结束时间戳
  $beginToday=mktime(0,0,0,date('m'),date('d'),date('Y'));
  $endToday=mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;
  $times['today']['begin'] = $beginToday;
  $times['today']['end'] = $endToday;

  //获取昨日起始时间戳和结束时间戳
  $beginYesterday=mktime(0,0,0,date('m'),date('d')-1,date('Y'));
  $endYesterday=mktime(0,0,0,date('m'),date('d'),date('Y'))-1;
  $times['yesterday']['begin'] = $beginYesterday;
  $times['yesterday']['end'] = $endYesterday;

  //获取上周起始时间戳和结束时间戳
  $beginLastweek=mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y'));
  $endLastweek=mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));
  $times['lastWeek']['begin'] = $beginLastweek;
  $times['lastWeek']['end'] = $endLastweek;

  //获取本月起始时间戳和结束时间戳
  $beginThismonth=mktime(0,0,0,date('m'),1,date('Y'));
  $endThismonth=mktime(23,59,59,date('m'),date('t'),date('Y'));
  $times['thisMonth']['begin'] = $beginThismonth;
  $times['thisMonth']['end'] = $endThismonth;

  //获取本周开始时间和结束时间,此例中开始时间为周一
  $defaultDate = date('Y-m-d');
  $first = 1;
  $w = date('w',strtotime($defaultDate));
  $beginWeek = strtotime("$defaultDate-" . ($w?$w-$first:6) . 'days');
  $endWeek = $beginWeek + 6*24*3600-1;
  $times['thisWeek']['begin'] = $beginWeek;
  $times['thisWeek']['end'] = $endWeek;

  //获取上月的起始时间戳和结束时间戳
  $beginLastmonth=mktime(0,0,0,date('m')-1,1,date('Y'));
  $endLastmonth=mktime(23,59,59,date('m')-1,date('t'),date('Y'));
  $times['LastMonth']['begin'] = $beginLastmonth;
  $times['LastMonth']['end'] = $endLastmonth;

  //获取今年的起始时间和结束时间
  $beginThisyear = mktime(0,0,0,1,1,date('Y'));
  $endThisyear = mktime(23,59,59,12,31,date('Y'));
  $times['thisYear']['begin'] = $beginThisyear;
  $times['thisYear']['end'] = $endThisyear;

  //获取上年的起始时间和结束时间
  $beginLastyear = mktime(0,0,0,1,1,date('Y')-1);
  $endLastyear = mktime(23,59,59,12,31,date('Y')-1);
  $times['lastYear']['begin'] = $beginLastyear;
  $times['lastYear']['end'] = $endLastyear;

  //获取本季度开始时间和结束时间
  $season = ceil((date('n'))/3);//当月是第几季度
  $beginThisSeason = mktime(0, 0, 0,$season*3-3+1,1,date('Y'));
  $endThisSeason = mktime(23,59,59,$season*3,date('t',mktime(0, 0 , 0,$season*3,1,date("Y"))),date('Y'));
  $times['thisSeason']['begin'] = $beginThisSeason;
  $times['thisSeason']['end'] = $endThisSeason;

  //获取上季度的起始时间和结束时间
  $beginLastSeason = mktime(0, 0, 0,($season-1)*3-3+1,1,date('Y'));
  $endLastSeason = mktime(23,59,59,($season-1)*3,date('t',mktime(0, 0 , 0,$season*3,1,date("Y"))),date('Y'));
  $times['lastSeason']['begin'] = $beginLastSeason;
  $times['lastSeason']['end'] = $endLastSeason;

  return $times;
}
$times = makeTime();

目前是我之前用到的时间戳,后期还会积累汇总,避免重复造轮子。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

PHP 相关文章推荐
php设计模式 Delegation(委托模式)
Jun 26 PHP
php 抽象类的简单应用
Sep 06 PHP
浅析php中jsonp的跨域实例
Jun 21 PHP
WampServer搭建php环境时遇到的问题汇总
Jul 23 PHP
Zend Framework教程之模型Model基本规则和使用方法
Mar 04 PHP
PHP中new static()与new self()的比较
Aug 19 PHP
php使用curl伪造来源ip和refer的方法示例
May 08 PHP
基于Laravel 多个中间件的执行顺序详解
Oct 21 PHP
laravel框架邮箱认证实现方法详解
Nov 22 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 PHP
TP5框架实现的数据库备份功能示例
Apr 05 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
Mar 09 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
May 11 #PHP
PHP 实现浏览记录并按日期分组
May 11 #PHP
thinkPHP5 ACL用户权限模块用法详解
May 10 #PHP
使用WAMP搭建PHP本地开发环境
May 10 #PHP
thinkPHP5 tablib标签库自定义方法详解
May 10 #PHP
PHP实现获取第一个中文首字母并进行排序的方法
May 09 #PHP
php7 安装yar 生成docker镜像
May 09 #PHP
You might like
深入php list()函数的详解
2013/06/05 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
自动更新作用
2006/10/08 Javascript
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
javascript如何判断输入的url是否正确
2014/04/11 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
AngularJS中table表格基本操作示例
2017/10/10 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
vue-model实现简易计算器
2020/08/17 Javascript
python遍历数组的方法小结
2015/04/30 Python
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
python实现五子棋小程序
2019/06/18 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
python 8种必备的gui库
2020/08/27 Python
python 制作磁力搜索工具
2021/03/04 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
2016/03/22 HTML / CSS
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
用C#语言写出与SQLSERVER访问时的具体过程
2013/04/16 面试题
社区敬老月活动实施方案
2014/02/17 职场文书
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android