【问题标题】:Calculating days hours and minutes php计算天数小时和分钟php
【发布时间】:2012-08-24 17:51:24
【问题描述】:

好的,所以我以毫秒为单位向我的 mysql 数据库发送一个整数。现在,我试图让它显示: 播放时间:1 天 3 小时 15 分钟。 但是我很难做到这一点,我只能得到分钟数天和小时,但它会是总小时数、总天数和总分钟数,而不是全部合二为一。我有这样的代码:

$time = $timeRow['time'];    
$seconds = floor($time / 1000);
$minutes = floor($seconds / 60);
$hours = floor($minutes / 60);
$days = round($hours / 24);
$milliseconds = $time % 1000;
$seconds = $seconds % 60;
$minutes = $minutes % 60;
echo'Time Played: '.$days.' days '.$hours.' hours '.$minutes.' minutes';

谁能帮我解决这个问题?

【问题讨论】:

  • 站在巨人的肩膀上,用PHP DateTime stuff
  • 你可以用我给的答案here
  • @moonwave99 它有什么帮助?
  • @alfasin - 这是一个更加灵活和通用的类,用于处理 PHP 中的日期和时间显示/计算/操作。
  • @alfasin - 使用毫秒创建一个DateInterval,例如,您将获得所有时间子单元。顺便说一句,我发布了主要的日期时间参考,其中包括程序和 OO 样式文档 - 由读者选择。

标签: php time milliseconds


【解决方案1】:
<?php

$time = $timeRow['time'] / 1000;

$days = floor($time / (24*60*60));
$hours = floor(($time - ($days*24*60*60)) / (60*60));
$minutes = floor(($time - ($days*24*60*60)-($hours*60*60)) / 60);
$seconds = ($time - ($days*24*60*60) - ($hours*60*60) - ($minutes*60)) % 60;

echo'Time Played: '.$days.' days '.$hours.' hours '.$minutes.' minutes '.$seconds.' seconds';

测试:http://codepad.viper-7.com/WBQQet

【讨论】:

  • @BrandonTylerJones 是的,这个计算让我多年来头疼 :))
【解决方案2】:

您从原始数字生成每个变量,这就是为什么它告诉您它是 1 天 35 小时;而不是 1 天 11 小时。

你需要开始减去值:

$seconds = floor($time / 1000);
$minutes = floor($seconds / 60);
$hours = floor($minutes / 60);
$days = round($hours / 24);

for ($i = 0; $i < $days; $i++) {
    $hours -= 24;
}

还有一段类似的时间、分钟和秒代码。

【讨论】:

  • @PeterSzymkowski - 你是什么意思?我知道它效率不高,但它会运行并产生看似正确的输出。
  • @BrandonTylerJones - 啊,for循环需要从0开始
  • @PeterSzymkowski - 谢谢。我很高兴人们批评我的代码并告诉我它是错误的,但如果你不说为什么它是错误的,那真的没有任何帮助。
  • 你必须证明这一点。我得到了 for 循环的错误值,并修复了它。距离代码中没有逻辑还有很长的路要走。它可能不是一个有效的逻辑,但它就在那里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-10
  • 2012-07-01
  • 1970-01-01
  • 2019-09-10
  • 1970-01-01
  • 1970-01-01
  • 2017-10-15
相关资源
最近更新 更多