在阅读TP5.1源码,发现其在时间范围上的写法很特别,个人第一次见,做一次记录

$timeRule = [
'today' => ['today', 'tomorrow'],
'yesterday' => ['yesterday', 'today'],
'week' => ['this week 00:00:00', 'next week 00:00:00'],
'last week' => ['last week 00:00:00', 'this week 00:00:00'],
'month' => ['first Day of this month 00:00:00', 'first Day of next month 00:00:00'],
'last month' => ['first Day of last month 00:00:00', 'first Day of this month 00:00:00'],
'year' => ['this year 1/1', 'next year 1/1'],
'last year' => ['last year 1/1', 'this year 1/1'],
];
echo date('Y-m-d H:i:s', strtotime('this week 00:00:00'));
// 结果如下
2018-01-08 00:00:00 // 指定时间:本周第一天 + 1年2个月5天3小时5分钟
echo date('Y-m-d H:i:s', strtotime('this week 00:00:00 + 1year + 2month + 5day + 3hour + 5minute'));
// 返回结果
2019-03-13 03:05:00
// 根据年份中的第几周,获取周的开始时间,需要注意的是 $week 必须是2位数,不足前补0
strtotime($year . 'W' . $week);
echo strtotime('2018' . 'W' . '02');
//结果
2018-01-08

/**
* 根据【年,周】,获取时间范围
* @param $year
* @param int $week
* @return array|false
*/
function getWeekStartAndEnd ($year, $week = 1) {
$year = (int)$year;
$week = (int)$week;
$date = new \DateTime;
$date->setISODate($year, 53);
$weeks = max($date->format("W"),52); //如果给定的周数大于周总数或小于等于0
if($week > $weeks || $week <= 0){
return false;
} //如果周数小于10
if($week < 10){
$week = '0' . $week;
} //当周起止时间戳
$startTime = strtotime($year . 'W' . $week); //当周起止日期
$weekDate['start'] = date("Y-m-d", $startTime);
$weekDate['end'] = date("Y-m-d", $startTime + 7 * 24 * 3600 - 1); return $weekDate;
}

PHP时间范围:本周、本月、下月等简写的更多相关文章

  1. js设置本周 本月 本年

    var SetSearchDate = function (sign, sid, eid) {//sign 标识符区分本周本月本年,sid开始时间id,eid结束时间id var now = new ...

  2. 根据本周本月本日来查询数据 C#winform数据查询

    这个我是在winform的页面上做的 1. 首先是在页面上添加3个lable   第一次点击lable会有相应的数据被查询出来  第二次点击同一个lable会刷新所有的数据 2.点击不同的label会 ...

  3. php获取 本月 本周 或者 下月 下周的 开始时间 结束时间

    <?php $now_time = time(); $date=date("Y-m-d",$now_time); function get_date($date,$t='d' ...

  4. MYSQL查询今天昨天本周本月等的数据

    mysql查询本季度 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT *FROM表名WHERE TO_DAYS ...

  5. c# 根据当前时间获取,本周,本月,本季度,月初,月末,各个时间段

    DateTime dt = DateTime.Now;  //当前时间   DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") //24小时制 ...

  6. oracle SQL语句取本周本月本年的数据

    --国内从周一到周日 国外是周日到周六 select to_char(sysdate-1,'D') from dual;--取国内的星期几 去掉减一取国外的星期 --取本周时间内的数据 ,)+) an ...

  7. Mysql 获取当天,昨天,本周,本月,上周,上月的起始时间

    转自: http://www.cppblog.com/tx7do/archive/2017/07/19/215119.html -- 今天 SELECT DATE_FORMAT(NOW(),'%Y-% ...

  8. PHP 时间获取本周 本月 本季度用法

    <?php        $week_begin = mktime(0, 0, 0,date("m"),date("d")-date("w&qu ...

  9. ASP获取上月本月下月的第一天和最后一天

    上月第一天:<%=dateadd("m",-1,year(date)&"-"&month(date)&"-1" ...

随机推荐

  1. 写了一个兼容IE9的图片放大器(基于vue)

    photoloupe 图片放大器 第一次写vue插件,本人比较喜欢用简单易懂的写法,不喜勿喷. 本插件支持IE9及以上版本,已经过验证. 本插件可根据需要设置放大倍数,最小支持1倍,支持小数 下载地址 ...

  2. TZOJ 数据结构期末历年题目

    A.数据结构练习题――线性表操作 线性表的基本操作 1.在某个位置p插入val,复杂度O(p) 2.在某个位置p删除val,复杂度O(p) 3.查找某个位置p的值,复杂度O(p) 4.清除链表,复杂度 ...

  3. FortiGate防火墙内存使用率高问题

    1.现象:zabbix监控到防火墙内存使用率频繁超过80%,而FortiGate防火墙内存超过80%将开启自身保护模式而不能新加策略等. 2.分析:这种情况一般是某些进程再释放内存的时候卡住.可以先查 ...

  4. 好文:javascript中的四种循环

    https://juejin.im/entry/5a1654e951882554b8373622?utm_medium=hao.caibaojian.com&utm_source=hao.ca ...

  5. VS unable to update auto-refresh path。。。。

    手工创建提示报错的路径,重新生成,成功

  6. 修复python命令行下接收不到参数的问题

    由于之前安装过多个python版本,导致出现了在命令行下直接给py文件传递参数的时候接收不到,即使重新卸载安装也没有解决. 解决办法: 修改如下图路径下的键值为:"D:\Python27\p ...

  7. .Net连接字符串设置连接池大小显著提高数据库速度

    在访问mysql数据库时,如果在连接字符串中设置使用连接池,同时设置连接池大小,经测试,可以显著提高访问数据库时的速度. 连接字符串: connectionStrings>    <add ...

  8. mongodb在windows下的安装

    Windows下安装MongoDB 1.下载MongoDB数据库http://fastdl.mongodb.org/win32/mongodb-win32-i386-1.6.5.zip: 2.将安装文 ...

  9. html与css关系

    1.html是网页的内容的载体 内容是作者发在页面想让用户浏览的信息,包括文字,图片,视频等 2.css样式是表现 像网页的外衣,比如标题字体的变化,颜色的变化,背景颜色,边框等,所有这些都是用来改变 ...

  10. firefox打开链接自动跳转至新页面设置

    Firefox打开新页面时,活动页面会自动跳转到刚刚打开的页面,用着很不舒服,想打开新页面标签时,页面依然会停留在之前的页面. 在网上找了一下,设置方法如下: 在地址栏里输入about:config, ...