strtotime() 是 PHP 中的一个函数,用于将任何英文文本的日期时间描述解析为 Unix 时间戳。这个函数非常灵活,支持多种时间格式。默认情况下,strtotime() 会尝试根据输入的字符串自动识别和解析时间格式,但也可以通过提供一个可选的第二个参数来指定一个特定的时间格式。
strtotime() 支持的时间格式字符集如下:
!:排除字符串。$:结束日期时间。%:一个或多个字母表示的天数前缀(如 -02-30)。':单引号包围的日期时间字符串。(:可选的时间戳前缀(如 1970-01-01 00:00:00)。-:日期时间分隔符(默认为空格或 +)。,:逗号分隔的日期时间字段。.:小数点。::冒号分隔的时间字段。/:斜杠分隔的日期时间字段(如 01/02/2000)。;:分号分隔的时间字段。@:Unix 时间戳。A:上午(AM)或下午(PM)。a:上午(AM)或下午(PM)的小写。B:大写的上午(AM)或下午(PM)。c:完整的日期和时间表示,包括毫秒。d:月份中的第几天,带前导零(01 到 31)。D:星期几的全名(通常是缩写)。e:十进制表示的天数(0 到 6)。F:月份的全名。g:12 小时制中的小时,12 小时制(0 到 12)。G:24 小时制中的小时(0 到 23)。h:12 小时制中的小时,带前导零(00 到 12)。H:24 小时制中的小时(00 到 23)。i:分钟,带前导零(00 到 59)。I:12 小时制中的上午/下午标识(AM 或 PM)。j:月份中的第几天,不带前导零(1 到 31)。J:一年中的第几天(000 到 366)。k:1000 进制表示的小时(0 到 23)。l:1000 进制表示的分钟(0 到 59)。m:月份,带前导零(01 到 12)。M:月份的全名。n:不带前导零的月份中的第几天(1 到 31)。N:ISO-8601 格式的数字表示的月份中的第几天(01 到 31)。o:ISO-8601 格式的日期和时间,包括年中的天数(例如:2004-02-12T15:19:21+00:00)。O:完整的日期和时间表示,包括时区(例如:2004-02-12T15:19:21+00:00)。P:大写的上午/下午标识(AM 或 PM)。r:完整的 RFC 822 格式的日期时间。s:秒,带前导零(00 到 59)。t:时间分隔符(通常是 :)。T:时间分隔符(通常是 :)。u:微秒。v:ISO-8601 格式的数字表示的年中的天数(例如:2004-02-12T15:19:21+00:00)。W:ISO-8601 格式的数字表示的星期几(0 到 6)。x:当前日期,格式为 YYYY-MM-DD。X:当前时间,格式为 HH:MM:SS。Y:四位数的年份(例如:2004)。y:两位数的年份(例如:04)。以下是一些使用 strtotime() 的示例:
// 默认情况下,strtotime() 会尝试自动解析时间格式
echo strtotime("2022-08-15"); // 输出:1659916800 (2022-08-15 00:00:00 UTC)
// 通过提供一个时间戳前缀,可以指定一个特定的时间格式
echo strtotime("+1 day", strtotime("2022-08-15")); // 输出:1659984000 (2022-08-16 00:00:00 UTC)
// 通过提供一个第二个参数来指定一个特定的时间格式
echo strtotime("15 August 2022", "d F Y"); // 输出:1659916800 (2022-08-15 00:00:00 UTC)
请注意,strtotime() 函数在处理日期和时间时会考虑时区和夏令时等因素。