📜  PHP | strtotime()函数(1)

📅  最后修改于: 2023-12-03 14:45:19.326000             🧑  作者: Mango

PHP | strtotime()函数

简介

PHP内置函数strtotime()可以将人类易读的日期时间字符串转换为UNIX时间戳,即从1970年1月1日00:00:00 GMT以来的秒数。此函数在处理日期时间时非常常用。

语法

strtotime(string $time, int $now = time()): int|false

  • $time: 表示日期时间的字符串。
  • $now: 可选参数,用于指定当前时间戳。默认值为当前时间。
用法
基本用法

可以用strtotime()将字符串转换为UNIX时间戳。

$timestamp = strtotime('2022-01-01');
echo $timestamp; // 输出:1640995200
支持的日期时间格式

虽然支持各种类型的日期时间字符串,但strtotime()强烈建议在转换日期时间前统一它们的格式。

| 类型 | 格式 | | --------------- | --------------------------------------------------- | | 绝对日期时间 | YYYY-MM-DD HH:MM:SSYYYY-MM-DD HH:MM:SS +HHMM | | 相对日期时间 | nowyesterday+1 day | | Unix 时间戳格式 | @unix_timestamp |

例如:

$timestamp = strtotime('2022-01-01 12:34:56 +0800');
echo $timestamp; // 输出:1640999696(东八区)

也可以用相对日期时间字符串。

$timestamp = strtotime('yesterday');
echo $timestamp; // 输出昨天同一时刻的时间戳
指定时间戳

strtotime()的第二个可选参数指定当前时间戳。

$timestamp = strtotime('1 hour', time() - 3600);
echo $timestamp; // 输出:当前时间戳 - 3600秒
返回值

如果转换成功,则返回一个Unix时间戳。如果转换失败,则返回false

注意事项
  • strtotime()函数是时区敏感的。在使用该函数之前最好先设置了时区。可以使用date_default_timezone_set()函数进行设置。
  • 当转换不成功时,strtotime()会返回false。切记要检查返回结果。
  • 注意strtotime()函数字符串解析的顺序。根据解析顺序,可能会引起一些难以调试的问题。例如,解析字符串2012-08-14 00:00:00 +0200时,时区偏移量被解析为小时而不是分钟。
  • 使用相对日期时间字符串时,注意引号的使用。例如,转换字符串+2 hours时,应该使用'...'将它括起来,如下所示:
$timestamp = strtotime('+2 hours');
echo $timestamp; // 错误示范:输出固定时间
$timestamp = strtotime('+2 hours', time());
echo $timestamp; // 正确示范:输出当前时间 + 2 小时

$timestamp = strtotime('+2 hours', time());
echo "$timestamp\n"; // 正确示范:输出当前时间 + 2 小时
$timestamp = strtotime('+' . 2 . 'hours', time());
echo "$timestamp\n"; // 正确示范:输出当前时间 + 2 小时