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 include的妙用,实现路径加密
Jul 29 PHP
简单的移动设备检测PHP脚本代码
Feb 19 PHP
奇怪的PHP引用效率问题分析
Mar 23 PHP
php中将汉字转换成拼音的函数代码
Sep 08 PHP
基于session_unset与session_destroy的区别详解
Jun 03 PHP
解析PHP中常见的mongodb查询操作
Jun 20 PHP
通过curl模拟post和get方式提交的表单类
Apr 23 PHP
PHP截取IE浏览器并缩小原图的方法
Mar 04 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
laravel返回统一格式错误码问题
Nov 04 PHP
YII2框架中日志的配置与使用方法实例分析
Mar 18 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
Apr 26 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制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
PHP进阶学习之命名空间基本用法分析
2019/06/18 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
js获取html页面节点方法(递归方式)
2013/12/13 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
2014/10/17 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
2017/06/15 Javascript
vue-router单页面路由
2017/06/17 Javascript
ajax前台后台跨域请求处理方式
2018/02/08 Javascript
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
python 实现堆排序算法代码
2012/06/05 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
python获取服务器响应cookie的实例
2018/12/28 Python
python实现烟花小程序
2019/01/30 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
Python PO设计模式的具体使用
2019/08/16 Python
django框架ModelForm组件用法详解
2019/12/11 Python
pymysql模块的操作实例
2019/12/17 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
攀岩、滑雪、徒步旅行装备:Black Diamond Equipment
2019/08/16 全球购物
外企C语言笔试题
2013/11/10 面试题
标记环介质访问控制协议
2016/03/27 面试题
学习十八大精神心得体会
2013/12/31 职场文书
大学生精神文明先进个人事迹材料
2014/05/02 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
项目合作协议书
2014/09/23 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
车队安全员岗位职责
2015/02/15 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书