PHP strtotime函数
1. 简介
PHP的strtotime()
函数是一个用于将人类可读的日期时间字符串转换为UNIX时间戳的非常实用的函数。UNIX时间戳是指自格林威治时间1970年1月1日零时起至今的秒数。
strtotime()
函数的语法如下:
strtotime(string time, intnow = time())
$time
参数是需要转换的日期时间字符串。$now
参数是一个可选的基准时间,用于指定转换的参考点。
2. 用法示例
下面是一些常见的用法示例:
2.1 转换为UNIX时间戳
把一个日期时间字符串转换为UNIX时间戳,可以简单地使用strtotime()
函数:
$time = "2022-01-01 00:00:00";
$timestamp = strtotime($time);
echo $timestamp; // 输出:1640966400
2.2 相对日期时间转换
strtotime()
函数支持很多相对日期时间字符串的转换。你可以使用例如”today”、”tomorrow”、”next week”等相对时间描述,将其转换为UNIX时间戳:
$timestamp = strtotime("today");
echo $timestamp; // 输出:当前日期的00:00:00对应的UNIX时间戳
$timestamp = strtotime("tomorrow 10:00:00");
echo $timestamp; // 输出:明天的10:00:00对应的UNIX时间戳
$timestamp = strtotime("next week");
echo $timestamp; // 输出:下周的当前时刻对应的UNIX时间戳
2.3 相对日期时间加减
strtotime()
函数还支持在相对时间字符串中使用”+”和”-“符号来进行加减操作。例如:
$timestamp = strtotime("+1 day");
echo $timestamp; // 输出:当前时间加一天对应的UNIX时间戳
$timestamp = strtotime("-1 week");
echo $timestamp; // 输出:当前时间减一周对应的UNIX时间戳
相对时间字符串还可以使用多个加减操作符进行连续计算,例如:
$timestamp = strtotime("+1 week -3 days");
echo $timestamp; // 输出:当前时间加一周减三天对应的UNIX时间戳
2.4 自定义格式化日期时间字符串
strtotime()
函数还支持自定义格式化日期时间字符串。以下是一些常见的用法:
2.4.1 使用点号分隔的日期格式
$time = "2022.01.01";
$timestamp = strtotime(str_replace(".", "-", $time));
echo $timestamp; // 输出:1640966400
2.4.2 非标准日期时间格式
$time = "22/01/01 12:34:56";
$timestamp = strtotime(str_replace("/", "-", $time));
echo $timestamp; // 输出:1641084896
2.4.3 自定义时间戳格式
$time = "1640966400";
$date = date("Y-m-d H:i:s", $time);
echo $date; // 输出:2022-01-01 00:00:00
3. 注意事项
strtotime()
函数对于日期时间字符串的格式要求相对宽松,但仍然需要符合常见的日期时间格式。strtotime()
函数的默认基准时间是当前时间(使用time()
函数获取),如果想要根据不同的基准时间进行转换,需要显式传递第二个参数。- 对于部分非标准的日期时间格式,需要使用字符替换等方式进行预处理,以便正确转换。
strtotime()
函数在解析无法转换的字符串时会返回false
,因此在使用结果前要进行判断。
4. 总结
strtotime()
函数是PHP中一个非常强大且实用的日期时间转换函数。它支持转换成UNIX时间戳、相对日期时间转换、相对日期时间加减、自定义格式化日期时间字符串等功能。使用它可以方便地处理各种日期时间的转换需求,为开发人员提供了很大的便利。
确保你对strtotime()
函数的使用方法和注意事项有了充分的了解,并加以规范和应用,可以让你的日期时间处理更加灵活高效。