strtotime() 函数
将何英文文本的日期或时间描述解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数)。
参数 | 描述 |
---|---|
time | 必需。规定日期/时间字符串。 |
now | 可选。规定用来计算返回值的时间戳。如果省略该参数,则使用当前时间。 |
注意事项
strtotime只能处理标准的英文日期格式。如果传入的日期格式是非标准的、中文或其他语言的日期格式(如 “2019年10月1日”),strtotime() 会返回 false 或空。
1)处理:2020年9月2日
$val = str_replace([‘年’, ‘月’, ‘日’], [‘-‘, ‘-‘, ”], $val);
2)处理:2020-9-1
$val = preg_replace_callback(‘/(\d{4})-(\d{1,2})-(\d{1,2})/’, function($matches) {
// 使用 str_pad 来补齐月份和日期
return $matches[1] . ‘-‘ . str_pad($matches[2], 2, ‘0’, STR_PAD_LEFT) . ‘-‘ . str_pad($matches[3], 2, ‘0’, STR_PAD_LEFT);
}, $val);
日期的加减运算
//今天
strtotime(‘now’)
strtotime(‘today’)
//昨天
strtotime(‘-1 day’)
strtotime(‘yesterday’)
mktime(0,0,0,date(‘m’),date(‘d’)-1,date(‘Y’))
//明天
strtotime(‘1 day’) strtotime(‘tomorrow’)
mktime(0,0,0,date(‘m’),date(‘d’)+1,date(‘Y’))
//前i天
strtotime(‘-‘.$i.’ day’);
//后i天
strtotime($i.’ day’);
mktime(0,0,0,date(‘m’),date(‘d’)+i,date(‘Y’));
星期的加减运算
//下周一
strtotime(‘next monday’)
//下周五
strtotime(‘last Friday’)
//本星期(星期一)
strtotime(‘this week’)
//上星期(星期一)
strtotime(‘last week’)
//下星期(星期一)
strtotime(‘next week’)
//上星期(7天前)
strtotime(‘-1 week’)
//下星期(7天后)
strtotime(‘1 week’)
//$i个星期
strtotime($i.’ week’)
//$i个星期后的星期一
strtotime($i.’ week monday’)
月份的加减运算
//上个月
strtotime(‘last month’)
strtotime(‘-1 month’)
//下个月
strtotime(‘next month’)
strtotime(‘1 month’)
//前$i月
strtotime(‘-‘.$i.’ month’)
mktime(0,0,0,date(‘m’)-$i,date(‘d’),date(‘Y’))
//后$i月
strtotime($i.’ month’)
mktime(0,0,0,date(‘m’)+$i,date(‘d’),date(‘Y’))
时间戳
一天(24小时)总秒数 86400
一周(7天)总秒数 604800
//今天0点
strtotime(date(‘Y-m-d’))
//今天23:59:59
strtotime(date(‘Y-m-d’))+86399
//昨天0点
strtotime(date(‘Y-m-d’,strtotime(‘-1 day’)))
//昨天23:59:59
strtotime(date(‘Y-m-d’,strtotime(‘-1 day’)))+86399
strtotime(date(‘Y-m-d’))-1
//明天0点
strtotime(date(‘Y-m-d’,strtotime(‘1 day’)))
//明天23:59:59
strtotime(date(‘Y-m-d’,strtotime(‘1 day’)))+86399
strtotime(date(‘Y-m-d’,strtotime(‘2 day’)))-1
//昨天的这个时刻
strtotime(‘-1 day’) //数字与day之前可以不用空格
//明天的这个时刻
strtotime(‘1 day’)
//$i天后的这个时刻
strtotime($i.’ day’)
//$i天后的这个时刻
strtotime(-$i.’ day’)
//$i天后的0点
strtotime(date(‘Y-m-d’,strtotime($i.’ day’)))
//$i天前的0点
strtotime(date(‘Y-m-d’,strtotime(-$i.’ day’)))
//本星期开始(周一0点)
strtotime(‘this week monday’)
//本星期结束(周日23:59:59)
strtotime(‘this week sunday’)+86399
strtotime(‘this week monday’)+604800-1
//前$i星期开始(周一0点)
strtotime(‘this week monday’)-604800 * $i
//前$i星期结束(周日23:59:59点)
strtotime(‘this week monday’)-604800 * ($i-1)-1
//上一个周一0点
strtotime(“-1 week Monday”) //今天是周一,则为上周一0点 今天是周二(周一之后),则为本周三0点
//下一个周一0点
strtotime(“1 week Monday”) //今天是周一,则为下周一0点 今天是周二(周一之后),则为下下周一0点
//本月首日0点
strtotime(date(‘Y-m’))
//本月尾日23:59:59
strtotime(date(‘Y-m’,strtotime(‘next month’)))-1
mktime(0,0,0,date(‘m’)+1,1,date(‘Y’))-1
//前$i月首日0点
mktime(0,0,0,date(‘m’)-$i,1,date(‘Y’))
//前$i月尾日23:59:59
mktime(0,0,0,date(‘m’)-$i+1,1,date(‘Y’))-1
//后$i月首日0点
mktime(0,0,0,date(‘m’)+$i,1,date(‘Y’))
//后$i月首日23:59:59
mktime(0,0,0,date(‘m’)+$i+1,1,date(‘Y’))-1