查找当前时间并减去以前的时间(以秒为单位)



我试图找到当前日期和时间,转换为unix时间戳,然后减去以前的时间。我尝试了多种方法,但收到了错误或不正确的值。到目前为止,这是我的代码:

// Current date and time
$currentTime = date("Y-m-d H:i:s");
// Convert datetime to Unix timestamp
$currentTimestamp = strtotime($currentTime);

// Create previous date and time
$previousTime = new DateTime("2021-04-17 13:00:00");
// Specify display format
$previousTime->format('Y-m-d H:i:s');
// Convert to Unix timestamp
$previousTimestamp = strtotime($previousTime);
// Subtract previous time from current time
$time = $currentTimestamp - $previousTimestamp;

// Display result
echo $time;

因此,如果当前日期和时间是例如:2021-04-17 14:00:00,而上一个日期和时间为2021-04-1713:00:00,那么结果应该是3600。或者,如果有两个小时的间隔,那么它是7200,等等。根据当前的代码,我得到的错误是:

未捕获类型错误:strtotime((:参数#1($datetime(必须为类型字符串,DateTime

我尝试过的其他代码没有返回正确的时间差,或者引发了其他错误。如何获得正确的时差?

您需要阅读文档,了解每个函数期望作为参数的内容以及每个函数返回的内容。您将时间戳(一个整数(与DateTime对象混合在一起。如果要进行日期计算,则需要对两者使用相同的格式。由于您正在寻找秒数差异,因此使用时间戳整数可能更简单。

此代码为您提供一个整数时间戳:

$currentTime = date("Y-m-d H:i:s");
$currentTimestamp = strtotime($currentTime);

但请注意,";现在";是time()函数的默认返回值,因此您可以改为执行以下操作:

$currentTimestamp = time();

你不需要这个:

// This gives you a DateTime object
$previousTime = new DateTime("2021-04-17 13:00:00");
// This doesn't change the internal representation,
// it just returns a value that you're not using.
$previousTime->format('Y-m-d H:i:s');
// This function expects a string, but you're giving an object.
$previousTimestamp = strtotime($previousTime); 

相反,您可以直接将格式化的日期字符串传递给strtotime(),它将返回一个整数时间戳:

$previousTimestamp = strtotime("2021-04-17 13:00:00");

现在你有两个整数代表秒,所以你可以减去它们,得到两者之间的秒数。您的程序变成:

$currentTimestamp = time();
$previousTimestamp = strtotime("2021-04-17 13:00:00");
$diff = $currentTimestamp - $previousTimestamp;
echo $diff;

或者只是:

echo time() - strtotime("2021-04-17 13:00:00");

相关内容

  • 没有找到相关文章

最新更新