【问题标题】:PHP Get seconds between two unix times?PHP 在两个 unix 时间之间获得秒数?
【发布时间】:2023-04-03 14:43:01
【问题描述】:

所以我一直在环顾四周,似乎无法计算 2 个 unix 时间之间的秒数,这是我的两个值:

1617258294 == start_time 1617258315 == 当前时间

我使用以下代码:

 $now = new DateTime();  
 $current_time = $now->getTimestamp();;
        
 $difference1 = $current_time - $start_time;
 $difference = $difference1 / 1000 / 60;

我在计算差值时得到这个值:26954.30525

但我不知道如何将其转换为秒?请有人看一下:)

【问题讨论】:

  • Unix 时间戳已经以秒为单位(自纪元以来的秒数:1970 年 1 月 1 日 00:00:00 UTC),所以一个简单的:time1 - time2 会给你以秒为单位的差异。

标签: php time unix-timestamp


【解决方案1】:

初始化DateTime 类时,Unix 时间戳必须以“@”字符开头。

$date1 = new DateTime('@' . $unixTimestamp1);
$date2 = new DateTime('@' . $unixTimestamp2);

您可以使用diff 方法计算两个DateTime 对象之间的差异。

$interval = $date2->diff($date1);
echo $interval('%s seconds');

使用 Unix 时间戳的 DateTime 类的另一个用例是方法 setTimestamp

$date = (new DateTime())->setTimestamp($unixTimestamp);

我想这就是处理时间比较、日期时间对象和 unix 时间戳所需的全部知识。

PS:是的,unix 时间戳基于 01.01.1970 以秒为单位。你也可以只减去它们。

$diffInSeconds = $timestamp1 - $timestamp2; 

【讨论】:

  • 嘿,完美,所以我做的一切都是正确的,但我将 unix 时间设置为相隔秒,所以我肯定不能得到 unix 倍这么大我怎么能把它转换成“相隔 4 秒”等而不是 26954.30525
  • $start_time 是什么格式?为什么要除以 1000 然后再除以 60?似乎您没有正确地做所有事情。
  • 那么,当您想要以秒为单位的差异时……为什么要除以 1000 再除以 60? unix 时间戳表示从 1970-01-01 到现在的秒数。当减去两个 unix 时间戳时,结果将以秒为单位。
猜你喜欢
  • 1970-01-01
  • 2010-12-03
  • 2011-04-26
  • 1970-01-01
  • 2020-11-25
  • 2014-05-04
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多