【问题标题】:Get latest from array of microtimes从微时间数组中获取最新信息
【发布时间】:2021-11-30 21:19:33
【问题描述】:

我正在遍历文件列表并获取它们的修改日期,该日期以微时间格式返回:

int(1633986072)
int(1633971686)
int(1634014866)
int(1634000474)

我可以遍历这些,但不确定哪个函数最适合识别哪个是最新的。

strtotime 是这里最好的方法还是其他任何替代方法?

【问题讨论】:

  • 这些可能是时间戳。最高价值是您正在寻找的。当值都在数组中时,可以使用 max 函数。 $latestTimestamp = max([1633986072,1633971686,1634014866,1634000474]);要获得可读的日期,您可以使用 date。

标签: php datetime microtime


【解决方案1】:

filemtime 之类的函数将时间作为 Unix 时间戳返回。时间戳可以收集在一个数组中。

$timeStamps = [
  1633986072,
  1633971686,
  1634014866,
  1634000474
];

您使用max 函数获取最后一个值。

$lastTs = max($timeStamps);  //1634014866

使用date 函数,您可以将时间戳显示为人类可读的本地时间。欧洲/柏林时区示例:

echo date('Y-m-d H:i:s',$lastTs);  //2021-10-12 07:01:06

编辑:对于附加问题,我怎样才能返回两个最高值?

为此,rsort 用于按降序对时间戳进行排序。只要数组中有值,就可以通过索引轻松访问最高值、次高值等。

rsort($timeStamps);
$lastTs = $timeStamps[0];  //1634014866
$last2Ts = $timeStamps[1]; //1634000474

【讨论】:

  • 嗨@jspit - 你知道返回两个最高值的好方法吗?
  • @wharfdale 我已经扩展了我的答案。
猜你喜欢
  • 1970-01-01
  • 2013-02-20
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 2013-03-09
  • 2020-10-22
相关资源
最近更新 更多