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中转义mysql语句的实现代码
Jun 24 PHP
php设计模式 Adapter(适配器模式)
Jun 26 PHP
php报表之jpgraph柱状图实例代码
Aug 22 PHP
php切割页面div内容的实现代码分享
Jul 31 PHP
php内核解析:PHP中的哈希表
Jan 30 PHP
PHP字符串中特殊符号的过滤方法介绍
Feb 18 PHP
PHP中round()函数对浮点数进行四舍五入的方法
Nov 19 PHP
php从文件夹随机读取文件的方法
Jun 01 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
Jun 07 PHP
php写入文件不覆盖的实例讲解
Sep 17 PHP
Laravel 创建指定表 migrate的例子
Oct 09 PHP
php使用redis的有序集合zset实现延迟队列应用示例
Feb 20 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 intval的测试代码发现问题
2008/07/27 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
javascript delete 使用示例代码
2010/03/29 Javascript
Webkit的跨域安全问题说明
2011/09/13 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
代码获取历史上的今天发生的事
2014/04/11 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
2015/12/13 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
JavaScript 身份证号有效验证详解及实例代码
2016/10/20 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
vue引入微信sdk 实现分享朋友圈获取地理位置功能
2019/07/04 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
[02:41]DOTA2英雄基础教程 冥魂大帝
2014/01/16 DOTA
python使用arcpy.mapping模块批量出图
2017/03/06 Python
在django模板中实现超链接配置
2019/08/21 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
最美乡村医生事迹材料
2014/06/02 职场文书
地球一小时宣传标语
2014/06/24 职场文书
查摆剖析材料范文
2014/09/30 职场文书
企业安全生产检查制度
2015/08/06 职场文书
如何用python插入独创性声明
2021/03/31 Python
SSM VUE Axios详解
2021/10/05 Vue.js