如何计算24小时内给定时间的百分比hh:mm:ss?

时间:2014-05-31 06:54:24

标签: javascript php

我正在做一个网络应用程序, 我正在努力解决有关时间百分比的问题, 我想从一天开始的时候得到开始时间的百分比。

例如,开始时间为08:30:00 一天的总时间为24:00:00

我如何获得start_time / total_time的时间百分比?

至于这种情况应该在33%左右,我无法弄清楚如何计算分钟和秒数。

我使用php和javascript做这个。我想用它们两者来解决它。也许两者都是?

这是我的js代码:

var start_time = parseFloat(time_begin)/24*100;
alert (start_time);

4 个答案:

答案 0 :(得分:2)

javascript解决方案将使用Date类,在fiddle上打开调试器以查看每秒的百分比变化。

  setInterval(function () {
     var secondsInADay = 24 * 60 * 60;
     var now = new Date();
     var hours = now.getHours() * 60 * 60;
     var minutes = now.getMinutes() * 60;
     var seconds = now.getSeconds();
     var totalSeconds = hours + minutes + seconds;
     var percentSeconds = 100 * totalSeconds/secondsInADay;
     console.log(totalSeconds, percentSeconds);
  }, 1000);

答案 1 :(得分:0)

在PHP中,您可以使用以下公式:

$time_begin = '08:00:00';
$start_time = round(((strtotime($time_begin)-strtotime('00:00:00'))/(24*60*60))*100);
echo $start_time.'%';

您可以在舍入功能中提供更多精确度。

$time_begin = '08:00:00';
$start_time = round(((strtotime($time_begin)-strtotime('00:00:00'))/(24*60*60))*100,2);
echo $start_time.'%';

JS可以完成:

var time_begin = '08:00:00';       
var a = time_begin.split(':');
var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]);
var start_time = Math.round((seconds/(24*60*60))*100);    

以获得更高的精确度

var start_time = Math.round((seconds/(24*60*60))*10000)/100;

答案 2 :(得分:0)

<?php

$date = '08:53:34';
$parts = explode(':', $date);
$secs = $parts[0] * 3600 + $parts[1] * 60 + $parts[2];

// day has 86 400 seconds
echo $secs / 864 . '%'; // return 37.05% (you can round it)

?>

这是PHP解决方案,你写道你使用php&amp; JS,你添加了两个标签。 如果你想使用JS解决方案,它将是类似的。

答案 3 :(得分:0)

PHP:我喜欢Dan Sherwin最好的,虽然我还没有测试过它

JS:我自己的(已测试)

var now = new Date(...);
var startOfDay = new Date(now.getTime());
startOfDay.setHours(0,0,0,0);
var percent = (now.getTime()-startOfDay.getTime()) / (1000*60*60*24)

编辑:根据您的要求,听起来不需要服务器端需要此信息。在这种情况下,即使这是一个廉价的操作,我建议你节省服务器资源,并让它执行客户端。这也使得在不重新加载页面的情况下更新栏更容易,因为否则需要非常昂贵的AJAX调用。需要注意的是,如果您希望时间栏能够在没有启用JavaScript的情况下为用户运行,那么您必须转到服务器端。