PHP
日期和时间 | Date and Time

strtotime

strtotime

(PHP 4, PHP 5, PHP 7)

strtotime - 将任何英文文本日期时间描述解析为Unix时间戳

描述

int strtotime ( string $time [, int $now = time() ] )

该函数预期会给出一个包含英文日期格式的字符串,并将尝试将该格式解析为Unix时间戳(自1970年1月1日00:00:00 UTC以来的秒数),相对于给定的时间戳now,或者当前时间,如果now没有提供。

除非在该参数中指定了时区,否则此功能的每个参数都使用默认时区。除非有意使用,否则小心不要在每个参数中使用不同的时区。有关定义默认时区的各种方法,请参阅date_default_timezone_get()。

参数

time

日期/时间字符串。有效格式在日期和时间格式中进行说明。

now

用作计算相对日期基准的时间戳。

返回值

返回成功时的时间戳,否则返回FALSE。在PHP 5.1.0之前,此函数在失败时将返回-1

错误/异常

如果使用系统设置或TZ环境变量E_NOTICE,则每次调用日期/时间函数都会生成一个如果时区无效的信息和/或a E_STRICTE_WARNINGmessage。另请参阅date_default_timezone_set()

Changelog

描述
5.3.0在PHP 5.3.0之前,提供给strtotime()的time参数(如本周,上周,上周和下周)的相对时间格式被解释为相对于当前日期/时间为7天的时间段比星期一到星期天的一周。
5.3.0在PHP 5.3.0之前,24:00不是有效的格式,strtotime()返回FALSE。
5.2.7在5.2.7之前的PHP 5中,如果在某个工作日是该月的第一天的月份中请求某个特定工作日的发生,则会错误地将一周添加到返回的时间戳中。这已在5.2.7及更高版本中得到纠正。
5.1.0现在在失败时返回FALSE,而不是-1。
5.1.0现在发出E_STRICT和E_NOTICE时区错误。
5.0.2在PHP 5中5.0.2以下,“今天”和其他相对时间从今天午夜开始计算错误。这与当前时间正确计算的其他版本不同。
5.0.0微秒开始被允许,但它们被忽略。

示例

Example #1 A strtotime() example

<?php echo strtotime("now"), "\n"; echo strtotime("10 September 2000"), "\n"; echo strtotime("+1 day"), "\n"; echo strtotime("+1 week"), "\n"; echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n"; echo strtotime("next Thursday"), "\n"; echo strtotime("last Monday"), "\n"; ?>

Example #2 Checking for failure

<?php $str = 'Not Good'; // previous to PHP 5.1.0 you would compare with -1, instead of false if (($timestamp = strtotime($str)) === false) {     echo "The string ($str) is bogus"; } else {     echo "$str == " . date('l dS \o\f F Y h:i:s A', $timestamp } ?>

注意

注意:如果年份编号以两位数格式指定,则00-69之间的值将映射到2000-2069和70-99到1970-1999。请参阅以下注释,了解32位系统上可能存在的差异(可能的日期可能会在2038-01-19 03:14:07结束)。

注意:时间戳的有效范围通常是从周五,1901年12月13日20:45:54 UTC到2038年1月19日03:14:07 UTC。(这些日期对应于32位有符号整数的最小值和最大值。)在PHP 5.1.0之前,并非所有平台都支持负时间戳,因此您的日期范围可能会限制为不早于Unix时期。这意味着例如1970年1月1日之前的日期不适用于Windows,某些Linux发行版和其他一些操作系统。对于64位版本的PHP,时间戳的有效范围实际上是无限的,因为64位可以代表两个方向大约2930亿年。

注意m / d / ydmy格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜线(/),则假定美国m / d / y ; 而如果分隔符是破折号(-)或点(),则假定欧洲的dmy格式但是,如果年份以两位数格式给出,并且分隔符是破折号(-,则日期字符串将被解析为ymd为避免可能的歧义,最好使用ISO 8601(YYYY-MM-DD)日期或DateTime :: createFromFormat()时尽可能

注意:不建议使用此功能进行数学运算。最好在PHP 5.3及更高版本中使用DateTime :: add()和DateTime :: sub(),或者在PHP 5.2中使用DateTime :: modify()。

另请参阅

  • DateTime::createFromFormat() - 根据指定的格式分析时间字符串

  • checkdate() - 验证公历日期

  • strptime() - 解析用strftime生成的时间/日期

← strptime

time →