如何使用PHP中的strtotime()函数进行日期时间转换
PHP中的strtotime()函数是将人类可读的日期和时间字符串转换为UNIX时间戳的强大工具。UNIX时间戳表示自1970年1月1日00:00:00以来经过的秒数。它在许多不同的应用程序中都有用处,包括日期时间比较和排序,以及计算日期之间的差异。在本篇文章中,我们将深入了解如何使用strtotime()函数的基本知识以及如何将不同格式的日期和时间字符串转换成UNIX时间戳。
使用strtotime()函数进行基本日期时间转换
您可以使用strtotime()函数将日期字符串转换为UNIX时间戳。这是一个基本的例子:
$dateString = "2019-01-01"; $unixTimeStamp = strtotime($dateString); echo $unixTimeStamp;
这将输出数字1546300800,它代表2019年1月1日00:00:00的UNIX时间戳。这里的$dateString必须符合ISO 8601格式,否则strtotime()函数将返回false。
您也可以将时间字符串转换为UNIX时间戳。例如:
$timeString = "10:30:00"; $unixTimeStamp = strtotime($timeString); echo $unixTimeStamp;
这将输出数字-1,因为没有日期信息。在这种情况下,您可以将时间字符串连接到日期字符串中并使用strtotime()函数进行转换。
$dateString = "2019-01-01"; $timeString = "10:30:00"; $dateTimeString = $dateString . " " . $timeString; $unixTimeStamp = strtotime($dateTimeString); echo $unixTimeStamp;
这将输出1546317000,它表示2019年1月1日10:30:00的UNIX时间戳。
使用strtotime()函数进行相对日期时间转换
strtotime()函数不仅可以将日期时间字符串转换为UNIX时间戳,还可以将相对日期字符串转换为UNIX时间戳。例如:
$unixTimeStamp = strtotime("+1 day");
echo $unixTimeStamp;
这将输出当前时间加一天的UNIX时间戳。相对日期字符串可以像“+1 day”这样简单的形式,也可以具有更复杂的更改序列。 例如:
$unixTimeStamp = strtotime("+2 weeks -3 days +1 hour");
echo $unixTimeStamp;
这将输出当前时间加2周、减去3天再加上1小时的UNIX时间戳。
使用strtotime()函数进行相对时间转换
相对时间转换也可以使用strtotime()函数来实现。例如:
$unixTimeStamp = strtotime("+30 minutes");
echo $unixTimeStamp;
这将输出当前时间加30分钟的UNIX时间戳。
您也可以在相对时间字符串中使用字符串“now”来表示当前时间。例如:
$unixTimeStamp = strtotime("now +1 hour");
echo $unixTimeStamp;
这将输出当前时间加1个小时的UNIX时间戳。
您还可以在相对时间字符串中使用“yesterday”和“tomorrow”来表示昨天和明天的日期。
使用strtotime()函数进行不同格式的日期时间转换
如果需要将不同格式的日期时间字符串转换为UNIX时间戳,就需要进行一些处理。 strtotime()函数可以解析许多不同的日期时间字符串,例如:
$dateString = "01/01/2019"; $unixTimeStamp = strtotime($dateString); echo $unixTimeStamp;
这将输出1546318800,它代表2019年1月1日的UNIX时间戳。在这种情况下,strtotime()函数可以解析MM/DD/YYYY格式的日期字符串。
您也可以将月份名称转换为数字。例如:
$dateString = "Jan 1, 2019"; $unixTimeStamp = strtotime($dateString); echo $unixTimeStamp;
这将输出1546300800,它代表2019年1月1日的UNIX时间戳。
您还可以解析其他格式的日期时间字符串。在解析之前,您必须指定要解析的格式。例如,如果要解析dd/mm/yyyy hh:mm:ss格式的日期时间字符串,可以使用如下代码:
$dateString = "01/01/2019 10:30:00"; $format = "d/m/Y H:i:s"; $dateTimeObj = DateTime::createFromFormat($format, $dateString); $unixTimeStamp = $dateTimeObj->getTimestamp(); echo $unixTimeStamp;
这将输出1546330200,它代表2019年1月1日10:30:00的UNIX时间戳。
结论
strtotime()函数是PHP中非常有用的工具,尤其是在日期和时间的处理中。无论您需要将日期字符串转换为UNIX时间戳,还是需要将相对日期字符串转换为UNIX时间戳,都可以使用strtotime()函数实现。最后,如果需要解析不同格式的日期时间字符串,使用DateTime::createFromFormat()是一个更好的选择。
