PHP函数strtotime():将任何日期时间字符串转换为时间戳
strtotime() 是 PHP 中一个强大的函数,它可以将任何格式的日期时间字符串转换为 Unix 时间戳,从而方便地进行日期时间的计算和比较。
Unix 时间戳是一个整数,表示从 1970 年 1 月 1 日 00:00:00 GMT 开始经过的秒数,通常用于计算时间差、记录时间和日期等。
下面是 strtotime() 函数的基本用法:
$timestamp = strtotime('2019-11-18 08:30:45');
echo $timestamp; // 输出 1574069445
上面的代码将字符串 '2019-11-18 08:30:45' 转换为 Unix 时间戳,存储在变量 $timestamp 中,并使用 echo 函数输出。
strtotime() 函数支持的日期时间字符串格式非常灵活,包括常见的日期时间格式、相对时间字符串、自然语言日期时间等,下面是一些例子:
#### 常见日期时间格式
$timestamp = strtotime('2019/11/18 08:30:45');
echo $timestamp; // 输出 1574069445
$timestamp = strtotime('2019-11-18T08:30:45+0800');
echo $timestamp; // 输出 1574069445
上面的代码分别将字符串 '2019/11/18 08:30:45' 和 '2019-11-18T08:30:45+0800' 转换为 Unix 时间戳。
#### 相对时间字符串
相对时间字符串指的是一些常用的时间间隔,例如 +1 day 表示增加一天,+1 week 表示增加一周,-1 hour 表示减少一小时等。
$timestamp = strtotime('+1 day');
echo $timestamp; // 输出明天此时的时间戳
$timestamp = strtotime('-1 hour');
echo $timestamp; // 输出一小时前的时间戳
上面的代码分别使用相对时间字符串获取明天此时和一小时前的时间戳。
#### 自然语言日期时间
自然语言日期时间是一种非常直观的描述方式,例如 'next Monday' 表示下周一,'last Friday' 表示上周五,'2 weeks ago' 表示两周前等。
$timestamp = strtotime('next Monday');
echo $timestamp; // 输出下周一的时间戳
$timestamp = strtotime('last Friday');
echo $timestamp; // 输出上周五的时间戳
$timestamp = strtotime('2 weeks ago');
echo $timestamp; // 输出两周前的时间戳
上面的代码分别使用自然语言描述获取下周一、上周五和两周前的时间戳。
除了以上的用法,strtotime() 还支持一些特殊的日期时间点,例如 'now' 表示当前时间,'tomorrow' 表示明天此时,'yesterday' 表示昨天此时等。
总之,strtotime() 是 PHP 中非常实用的一个函数,可以帮助我们解析并转换各种格式的日期时间字符串,加速开发效率,避免手动计算和转换时间造成的错误。
