猿问

如何根据php中的日期和时间计算某些内容是否已过期

如何根据 php 后端的日期和时间计算某些内容是否已过期。此外,无论时区如何,它都应该适用于用户。


数据库时间戳 2020-07-24 21:24:27


超时值来自 api 00:03:47


if((2020-07-24 21:24:27 + 00:03:47) < date()) {

echo "expired";

} else {

echo "pending";

}


慕哥6287543
浏览 119回答 1
1回答

慕妹3146593

您的日期中没有时区信息,因此我假设数据库中的日期与服务器位于同一时区。使用 DateTime 的 add() 方法将 api 中的时间作为 DateInterval 添加到其中,然后与当前时间进行比较以获得结果。<?php$timestamp = '2020-07-24 21:24:27';$timeout = '00:03:47';function isExpired(string $timestamp, string $timeout): bool {&nbsp; $timestampDate = new DateTime($timestamp);&nbsp; $timeoutParts = explode(':', $timeout);&nbsp; $timestampDate->add(new DateInterval(sprintf('PT%sH%sM%sS', $timeoutParts[0], $timeoutParts[1], $timeoutParts[2])));&nbsp; return $timestampDate < new DateTime();}// now for me is 2020-07-24 20:37:00var_dump(isExpired($timestamp, $timeout)); // falsevar_dump(isExpired('2020-07-24 20:00:00', '01:00:00')); // falsevar_dump(isExpired('2020-07-24 19:00:00', '01:00:00')); // truevar_dump(isExpired('2020-07-23 19:00:00', '12:00:00')); // truevar_dump(isExpired('2020-07-25 19:00:00', '12:00:00')); // false
随时随地看视频慕课网APP
我要回答