如何使用PHP的strtotime函数将日期字符串转为时间戳
发布时间:2023-06-04 04:56:23
在 PHP 中,我们可以用 strtotime() 函数将一个日期字符串转换为时间戳。这个函数十分方便,只需传入一个日期字符串,它会自动解析出日期和时间信息,然后返回一个 Unix 时间戳(自1970年1月1日 00:00:00 GMT 开始的秒数)。
下面是一些常见的日期字符串格式与相应的转换方法。
1. 年-月-日 模式(例如“2021-08-01”)
要将一个年-月-日的日期字符串转换为时间戳,可以使用如下代码:
$date_str = '2021-08-01'; $timestamp = strtotime($date_str); echo $timestamp; // 输出:1627785600
这个函数将默认把时间设为 00:00:00。
2. 年/月/日 模式(例如“2021/08/01”)
同样,我们仍可以使用 strtotime() 函数将一个斜杠分隔的日期字符串转换为时间戳,只需稍作修改即可:
$date_str = '2021/08/01';
$timestamp = strtotime(str_replace('/', '-', $date_str));
echo $timestamp; // 输出:1627785600
同样要注意时分秒默认为 00:00:00。
3. 小写的“now”字符串
当我们用字符串“now”表示当前时间时,strtotime() 会返回当前时间的 Unix 时间戳:
$timestamp = strtotime('now');
echo $timestamp;
4. 时间戳或日期对象
如果我们不确定输入的参数是时间戳还是日期对象,可以使用如下代码,先通过 is_numeric() 函数检测参数类型,如果是数字则说明是 Unix 时间戳,直接返回即可;否则再将字符串转换为 Unix 时间戳:
$date_input = '2021-08-01'; $timestamp = is_numeric($date_input) ? $date_input : strtotime($date_input); echo $timestamp; // 输出:1627785600
5. 带时间的日期字符串
我们还可以将带时间的日期字符串转换为 Unix 时间戳,只要按照日期格式写就可以了,例如:
$date_str = '2021-08-01 12:34:56'; $timestamp = strtotime($date_str); echo $timestamp; // 输出:1627817696
同样,如果输入的参数包含时间信息,就直接返回 Unix 时间戳。需要注意的是,时间应该使用 24 小时制。
综上所述,strtotime() 函数可以将字符串转换为 Unix 时间戳,并且对于各种日期格式都有很好的兼容性,非常方便。
