PHP中的strtotime()函数:如何将字符串转换为时间戳?
strtotime() 函数是 PHP 中用于将字符串转换为时间戳的内置函数。它的使用非常灵活,可以识别和解析各种不同格式的日期和时间字符串。
strtotime() 函数的基本语法如下:
strtotime(string $time [, int $now = time() ])
其中 $time 是要转换的时间字符串,可以是一个任意的合法日期和时间格式的字符串。$now 是可选参数,表示从哪个时间开始计算,默认为当前时间。
下面是一些常用的时间字符串格式示例:
1. Unix 时间戳格式:时间戳可以是一个整数或一个以 "@" 符号开头的字符串,表示从 1970-01-01 00:00:00 UTC 开始的秒数。
$timestamp = strtotime('1597248000'); // 2020-08-13 00:00:00
$timestamp = strtotime('@1597248000'); // 2020-08-13 00:00:00
2. 日期和时间格式:可以是各种不同的日期和时间字符串格式,如 "Y-m-d H:i:s"、"Y/m/d H:i:s"、"Y年m月d日 H时i分s秒" 等等。函数会尽力解析并返回对应的时间戳。
$timestamp = strtotime('2020-08-13 12:34:56');
$timestamp = strtotime('2020/08/13 12:34:56');
$timestamp = strtotime('2020年08月13日 12时34分56秒');
3. 相对时间格式:可以使用一些关键词来表示相对于当前时间的偏移量,如 "now"(当前时间)、"yesterday"(昨天)、"tomorrow"(明天)、"+1 day"(增加一天)、"-1 week"(减少一周)等等。
$timestamp = strtotime('now');
$timestamp = strtotime('yesterday');
$timestamp = strtotime('tomorrow');
$timestamp = strtotime('+1 day');
除了上述常用的格式之外,strtotime() 还可以识别和解析其他一些特殊的日期和时间字符串格式,如绝对日期(如 "first day of January 2021")、相对日期(如 "next Monday")、ISO 8601 扩展格式(如 "2021-01-01T12:00:00+00:00")等等。
需要注意的是,strtotime() 函数在解析日期和时间字符串时,会尝试根据字符串的上下文来判断年、月、日、时、分、秒的顺序。在有些情况下,可能会出现解析错误的情况。因此,在使用 strtotime() 函数时,建议提供一个明确的日期和时间格式字符串,以避免意外的解析结果。
在使用 strtotime() 函数转换时间字符串为时间戳之后,可以使用 date() 函数将其格式化为任意需要的日期和时间格式字符串。
总结起来,strtotime() 函数是 PHP 中非常实用的一个函数,通过它可以方便地将各种格式的时间字符串转换为时间戳,进而进行时间计算和格式化。
