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开发大型项目的一点经验
Oct 09 PHP
社区(php&&mysql)三
Oct 09 PHP
PHP 时间日期操作实战
Aug 26 PHP
php获取通过http协议post提交过来xml数据及解析xml
Dec 16 PHP
PHP curl实现抓取302跳转后页面的示例
Jul 04 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
Jul 22 PHP
使用PHP如何实现高效安全的ftp服务器(二)
Dec 30 PHP
PHP实现的DES加密解密实例代码
Apr 06 PHP
ThinkPHP实现附件上传功能
Apr 27 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
php无限极分类实现方法分析
Jul 04 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
Mar 02 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中include()与require()的区别说明
2010/03/10 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
javascript 打印内容方法小结
2009/11/04 Javascript
jquery 可排列的表实现代码
2009/11/13 Javascript
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
javascript实现画不相交的圆
2015/04/07 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
2015/12/03 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
AngularJS自定义控件实例详解
2016/12/13 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
js字符串倒序的实例代码
2018/11/30 Javascript
Javascript的this详解
2019/03/23 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
2019/08/04 Javascript
vue移动端使用canvas签名的实现
2020/01/15 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python逐行读取文件内容的三种方法
2014/01/20 Python
Python程序设计入门(2)变量类型简介
2014/06/16 Python
tensorflow实现softma识别MNIST
2018/03/12 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书