根据不同的时间日期查询数据

版权声明:我是锋子@FENGZI https://blog.csdn.net/weixin_37546664/article/details/76100906

最近根据项目需求写了一个接口,其中有一个条件是根据不同的时间日期来获取数据,这里做个笔记,记录下:

根据本日,本周,本月来获取数据,三个条件:

本日: 开始时间是从当日的00:00:00开始,到进日结束的23:59:59,算是一整天;

代码:

  $start = date("Y-m-d 00:00:00");

  $end  = date("Y-m-d H:i:s");


本周:(利用date()函数的“w”这个参数,可以动态的获取每周的周几)

  默认情况下,date("w")的最后一天是周六,第一天是周日(等于date("w")周日那天是为0),这是老外的习惯相当于是六天制;

我们按我们中国的习惯是来,对每周进行加或减一就行了:

代码:$days  = date("w");   //动态获取每周的天数(今天是周几,就显示为周几,比如今天周三,就匹配到周三)

  $start = strtotime( date("Y-m-d") ) - ($days?  ( ($days - 1) : 6 ) * 60 * 60 * 24 );

 解释:首先根据日期对周数(周的天数)进行相减,在周数这里使用了一个三元运算,意思就是:如果为date("w")为0,表示是星期天,那么就减6天,回到了周一;如果不是,就减去实际的周数,($days - 1)这里是表示第一天是按周一开始。周数减一天,日期少减一天,往前匹配一天即为周一。

 

  $end = strtotime("{$days}+days");

  解释:这句很好理解:开始为每周的第一天,那么计算结束时,当前是周几,数据就查询到周几(比如,今天是周三,我要查这周的数据,开始时间为周一,就是>=周一,结束时间为今天 <= 周三)周的天数是通过date("w")来动态匹配的。然后把获取的实际天数利用strtotime()转化成时间戳,进行运算就可以了。


本月:从当月第一天开始求,求出这个月的所有数据。

代码:

  $start = strtotime(0, 0, 0, date("m"), 1, date("Y"));         //这几个参数分别表示为:时,分,秒,月,天,年。

  $end  = strtotime(23, 59, 59, date("m"), date("t"), date("Y"));

解释:利用 date("m"),date("t"),date("Y") 动态的获取到,月、天、年。date("t")是动态获取到一个月的总天数。

当时间为开始时间时,把天数设置成 1,表示从这月的第一天开始。当计算结束时间时,利用date("t")去动态获取一个月的总天数就行了。


猜你喜欢

转载自blog.csdn.net/weixin_37546664/article/details/76100906
今日推荐