【问题标题】:How to calculate if something has expired based on date and time in php [closed]如何根据php中的日期和时间计算某些内容是否已过期[关闭]
【发布时间】:2020-07-24 16:40:19
【问题描述】:

如何根据 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";
}

【问题讨论】:

标签: php date time


【解决方案1】:

您的日期中没有时区信息,因此我假设 db 中的日期与服务器位于同一时区。

使用 DateTime,它的 add() 方法将 api 的时间作为 DateInterval 添加到它,然后将它与当前时间进行比较得到结果。

<?php

$timestamp = '2020-07-24 21:24:27';
$timeout = '00:03:47';

function isExpired(string $timestamp, string $timeout): bool {
  $timestampDate = new DateTime($timestamp);
  $timeoutParts = explode(':', $timeout);
  $timestampDate->add(new DateInterval(sprintf('PT%sH%sM%sS', $timeoutParts[0], $timeoutParts[1], $timeoutParts[2])));

  return $timestampDate < new DateTime();
}

// now for me is 2020-07-24 20:37:00
var_dump(isExpired($timestamp, $timeout)); // false
var_dump(isExpired('2020-07-24 20:00:00', '01:00:00')); // false
var_dump(isExpired('2020-07-24 19:00:00', '01:00:00')); // true
var_dump(isExpired('2020-07-23 19:00:00', '12:00:00')); // true
var_dump(isExpired('2020-07-25 19:00:00', '12:00:00')); // false

【讨论】:

    猜你喜欢
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 2017-05-12
    相关资源
    最近更新 更多