使用PHP中的strtotime()函数将日期转换为时间戳
在PHP编程中,常常需要将日期时间转换为时间戳或者将时间戳转换为日期时间格式。其中,strtotime()函数是PHP内置的函数之一,可以将日期时间字符串转换为UNIX时间戳。本文将从以下几个方面介绍strtotime()函数的用法:
1. 功能和语法
2. 参数说明
3. 示例
## 1. 功能和语法
strtotime()函数的功能是将英文文本格式日期转换为时间戳(timestamp)。其语法为:
int strtotime ( string $time [, int $now = time() ] )
其中,$time参数是必传参数,表示要进行转换的日期字符串。$now是可选参数,表示当前时间的时间戳,默认使用当前时间。该函数的返回值是一个整数类型的时间戳。
## 2. 参数说明
在使用strtotime()函数时,需要通过参数来设置要转换的日期字符串和当前时间的时间戳。下面是参数说明:
### 2.1 $time
$time参数是一个必传参数,它表示要进行转换的日期字符串,可以是以下格式之一:
| 格式 | 示例 |
|------------------|------------------------------|
| 标准的日期时间 | 2020-01-01 22:00:00 |
| ISO 8601日期时间 | 2020-01-01T22:00:00+08:00 |
| 面向人类的日期时间 | January 01 2020 22:00:00 PST |
| Unix时间戳 | 1577910000 |
其中,标准的日期时间和ISO 8601日期时间都可以被strtotime()函数解析,而面向人类的日期时间需要相应的解析器支持。同时,也可以直接传入Unix时间戳。
### 2.2 $now
$now参数是一个可选参数,默认为当前时间的时间戳。它表示要使用的基准时间,即以哪个时间点为基准来计算时间戳。它可以是一个整数类型的时间戳,或者是一个表示日期时间的字符串。
## 3. 示例
了解了strtotime()函数的语法和参数说明之后,下面来看一些常见的实例:
### 3.1 将字符串转换为时间戳
// 将标准日期转换为时间戳
echo strtotime('2020-01-01 00:00:00'); // 输出结果:1577827200
// 将ISO 8601日期转换为时间戳
echo strtotime('2020-01-01T00:00:00+08:00'); // 输出结果:1577827200
// 将面向人类的日期转换为时间戳
echo strtotime('January 01 2020 00:00:00 PST'); // 输出结果:1577838000
// 将Unix时间戳转换为时间戳
echo strtotime('1577827200'); // 输出结果:1577827200
### 3.2 使用$now设置基准时间
// 使用当前时间戳为基准时间计算时间戳
echo strtotime('+1 day'); // 输出结果:1605532800
// 使用2020年1月1日为基准时间计算时间戳
echo strtotime('+1 day', strtotime('2020-01-01')); // 输出结果:1577942400
// 使用2020-01-01 00:00:00时间为基准时间计算时间戳
echo strtotime('+1 day', strtotime('2020-01-01 00:00:00')); // 输出结果:1577904000
至此,通过以上实例展示了strtotime()函数的基本用法。需要注意的是,strtotime()函数只能处理1970年1月1日之后的时间,因为它是基于Unix时间戳的,而Unix时间戳是从1970年1月1日开始计算的。如果要处理1970年1月1日之前的时间,可以考虑使用其他的日期时间函数。
