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() 函数也很巧妙,牛哇牛哇,以后有新发现会继续补充,有错误请大佬指正。 (编辑:十堰站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |