欢迎访问宙启技术站
智能推送

如何使用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 时间戳,并且对于各种日期格式都有很好的兼容性,非常方便。