加入收藏 | 设为首页 | 会员中心 | 我要投稿 十堰站长网 (https://www.0719zz.com/)- 混合云存储、网络、视频终端、云计算、媒体处理!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP获取今天,昨天,本周,本月,季度,年份等特殊时间戳方法整

发布时间:2023-02-16 14:02:32 所属栏目:PHP 来源:互联网
导读:问题描述 时间在我们日常的代码编写中会是经常出现的筛选或排序条件,尤其是一些特殊时间节点的时间显得尤为突出,例如昨天,当前日期,当前月份,当前季度,以及当前年份的开始以及结束的时间戳,今天对部分相对简便的方法进行了部分整理。 解决方案 话不多

 
              $timeamp['start'] = strtotime(date('Y-m-d'));
 
              $timeamp['over'] = strtotime(date('Y-m-d',strtotime('+1 day')));
 
              break;
 
          case 'yesterday'://昨天
 
              $timeamp['start'] = strtotime(date('Y-m-d',strtotime('-1 day')));
 
              $timeamp['over'] = strtotime(date('Y-m-d'));
 
              break;
 
          case 'beforyesterday'://前天
 
              $timeamp['start'] = strtotime(date('Y-m-d',strtotime('-2 day')));
 
              $timeamp['over'] = strtotime(date('Y-m-d',strtotime('-1 day')));
 
              break;
 
          case 'beforweek'://本周
 
              $timeamp['start'] = strtotime(date("Y-m-d H:i:s",date("m"),date("d")-date("w")+1,date("Y"))));
 
              $timeamp['over'] = strtotime(date("Y-m-d H:i:s",date("d")-date("w")+7,date("Y"))));
 
              break;
 
          case 'Nowmonth'://本月
 
              $timeamp['start'] = strtotime(date('Y-m-01'));
 
              $timeamp['over'] = strtotime(date('Y-m-d',strtotime('+1 day')));
 
              break;
 
          case 'permonth'://上月
 
              $timeamp['start'] = strtotime(date('Y-m-01',strtotime('-1 month')));
 
              $timeamp['over'] = strtotime(date('Y-m-01'));
 
              break;
 
          case 'preweek'://上周 注意我们是从周一开始算
 
              $timeamp['start'] = strtotime(date('Y-m-d',strtotime('-2 week Monday')));
 
              $timeamp['over'] = strtotime(date('Y-m-d',strtotime('-1 week Monday +1 day')));
 
              break;
 
          case 'Nowweek'://本周
 
              $timeamp['start'] = strtotime(date('Y-m-d',strtotime('-1 week Monday')));
 
              $timeamp['over'] = strtotime(date('Y-m-d',strtotime('+1 day')));
 
              break;
 
          case 'preday'://30
 
              $timeamp['start'] = strtotime(date('Y-m-d'),strtotime($param.' day'));
 
              $timeamp['end'] = strtotime(date('Y-m-d'));
 
              break;
 
          case 'nextday'://30
 
              $timeamp['start'] = strtotime(date('Y-m-d'));
 
              $timeamp['over'] = strtotime(date('Y-m-d'),strtotime($param.' day'));
 
              break;
 
          case 'preyear'://去年
 
              $timeamp['start'] = strtotime(date('Y-01-01',strtotime('-1 year')));
 
              $timeamp['over'] = strtotime(date('Y-12-31',strtotime('-1 year')));
 
              break;
 
          case 'Nowyear'://今年
 
              $timeamp['start'] = strtotime(date('Y-01-01'));
 
              $timeamp['over'] = strtotime(date('Y-m-d',strtotime('+1 day')));
 
              break;
 
          case 'quarter'://季度
 
              $quarter = ceil((date('m'))/3);
 
              $timeamp['start'] = mktime(0,$quarter*3-2,date('Y'));
 
              $timeamp['over'] = mktime(0,$quarter*3+1,date('Y'));
 
              break;
 
          default:
 
              $timeamp['start'] = strtotime(date('Y-m-d'));
 
              $timeamp['over'] = strtotime(date('Y-m-d',strtotime('+1 day')));
 
              break;
 
      }
 
      return $timeamp;
 
  }
 
  写在最后
 
  小发现:在进行测试的时候发现了 date()函数比较有意思的地方,可以直接拼接结果,当你把y-m-d h:i:s中的一部分写死后仍然是可以执行的,结果就是你写死的数值,后面有机会深入研究下底层代码,好像是在C语言中,结构体来实现日期以及时间戳的格式,传参是进行了判断,所以可以达到不同形式的显示。strtotime() 函数也很巧妙,牛哇牛哇,以后有新发现会继续补充,有错误请大佬指正。

(编辑:十堰站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读