PHP strtotime 函数详解
简介
PHP strtotime 函数是一个非常有用的日期转换函数,可以将人类可读的日期和时间字符串转换为 Unix 时间戳。Unix 时间戳是一个表示从 1970 年 1 月 1 日零点到指定日期时间的秒数。
strtotime 函数在处理日期字符串时非常灵活,可以识别大部分常见的日期和时间格式,包括但不限于以下几种:
- 2021-01-01
- 2021/01/01
- 2021.01.01
- January 1, 2021
- 1st January 2021
- 2021年1月1日
该函数还可解析相对日期时间,如 “yesterday” (昨天)、”tomorrow” (明天)、”next week” (下周) 等。
接下来,我们将详细介绍 PHP strtotime 函数的使用方法及一些注意事项。
基本用法
strtotime 函数的基本语法如下所示:
strtotime(string time, intnow = time()): int|false
- $time:要转换的日期时间字符串。
- $now(可选):用于参照相对时间的时间戳。
该函数返回 Unix 时间戳,如果转换失败则返回 false。
现在,让我们看几个具体的示例来了解如何使用 strtotime 函数。
示例 1:将日期字符串转换为 Unix 时间戳
$timeString = "2022-01-01";
$timestamp = strtotime($timeString);
echo $timestamp; // 输出:1640995200
在上面的示例中,我们将格式为 “2022-01-01” 的日期字符串转换为 Unix 时间戳。转换成功后,我们将 Unix 时间戳 1640995200 输出到屏幕上。
示例 2:将相对日期字符串转换为 Unix 时间戳
$relativeTimeString = "tomorrow";
$timestamp = strtotime($relativeTimeString);
echo $timestamp; // 输出:1661971200
在上面的示例中,我们将相对日期字符串 “tomorrow” 转换为 Unix 时间戳。要注意的是,相对日期字符串是相对于给定的时间戳(默认为当前时间)进行计算的。在示例中,我们得到的 Unix 时间戳 1661971200 是表示明天这个时间点的。
日期时间格式
strtotime 函数能够理解多种日期时间格式,并将其转换为 Unix 时间戳。下面是一些常见的日期时间格式及其对应的示例:
- “2021-01-01″:日期格式,返回该日期的零点的 Unix 时间戳。
- “2021-01-01 12:34:56″:日期时间格式,返回指定日期时间的 Unix 时间戳。
- “January 1, 2022″:英文日期格式,返回指定日期的零点的 Unix 时间戳。
- “next Monday”:相对日期格式,返回下一个周一的零点的 Unix 时间戳。
在使用 strtotime 函数时,我们可以根据需求选择合适的日期时间格式。
一些特殊用法
处理年份边界
strtotime 函数在处理跨年份的日期时存在一些特殊情况。例如,如果给定的日期为 “2021-12-31″,那么通过 strtotime 函数转换得到的 Unix 时间戳将是下一年的时间戳。
$dateString = "2021-12-31";
$timestamp = strtotime($dateString);
echo $timestamp; // 输出:1640908800
处理错误情况
当 strtotime 函数无法解析给定的日期时间字符串时,它会返回 false。因此,在使用该函数的时候,我们应该对返回值进行判断,以处理可能的错误情况。
$dateString = "invalid date string";
$timestamp = strtotime($dateString);
if ($timestamp === false) {
echo "日期时间转换失败!";
}
总结
通过本文的介绍,我们了解了 PHP strtotime 函数的基本用法以及一些注意事项。strtotime 函数在日期时间相关的处理中非常实用,可以方便地将人类可读的日期时间字符串转换为机器可处理的 Unix 时间戳。在实际开发中,我们可以根据 strtotime 函数的灵活性,灵活应用它来满足各种需求。