欢迎访问宙启技术站
智能推送

如何使用PHP中的strtotime()函数进行日期时间转换

发布时间:2023-06-13 22:16:45

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()是一个更好的选择。