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

PHP中的strtotime()函数:如何将字符串转换为时间戳?

发布时间:2023-07-06 05:59:58

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 中非常实用的一个函数,通过它可以方便地将各种格式的时间字符串转换为时间戳,进而进行时间计算和格式化。