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

Javascript 如何计算在给定时间内24小时内的时间百分比hh:mm:ss?,javascript,php,Javascript,Php,我正在做一个web应用程序, 我正在努力解决有关时间百分比的问题, 我想从一天的开始时间得到开始时间的百分比 例如,开始时间为08:30:00 一天的总时间是24:00:00 我如何获得开始时间/总时间的时间百分比 至于这个例子应该是33%左右,我不知道如何计算分和秒 我使用php和javascript来完成这项工作。我想用两者中的任何一个来解决这个问题。也许两者都有 以下是我的js代码: var start_time = parseFloat(time_begin)/24*100; alert

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

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

我如何获得开始时间/总时间的时间百分比

至于这个例子应该是33%左右,我不知道如何计算分和秒

我使用php和javascript来完成这项工作。我想用两者中的任何一个来解决这个问题。也许两者都有

以下是我的js代码:

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

在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;

这是PHP解决方案,您编写了您正在使用的PHP和JS,您添加了两个标记。
如果您想使用JS解决方案,它将是类似的。

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

  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);

PHP:我最喜欢Dan Sherwin的,尽管我还没有测试过

JS:我自己的(测试)


编辑:根据您的需求,服务器端似乎不需要这些信息。在这种情况下,即使这是一个便宜的操作,我还是建议您节省服务器资源,并在客户端执行此操作。这也使得在不重新加载页面的情况下更新工具栏变得更容易,因为这需要非常昂贵的AJAX调用。需要注意的一点是,如果您想让时间栏为未启用JavaScript的用户运行,则必须转到服务器端。

用户分钟而不是小时和时间来计算百分比?什么时区?本地,UTC?你如何定义一天的开始时间?以及00:00和开始时间之间的百分比差异?时间开始是00:00:00。。。我只计算当天的费用。我试图在时间栏中显示百分比值,以显示一天24小时的时间分配。这是我的概念,虽然我知道有插件,但有可能做到这一点吗?链接图片:由于它是JavaScript,我相信我们都可以忽略我在最后一行忘了一个分号的事实,lolOk,我注意到哈哈:)我能知道如何将开始时间的变量,比如说$startTime从php传递到这个函数中吗?Dan是怎么做到的,$startTime是基于最大值100的,而在我的方法中,它基于最大值1。因此,将他的结果除以100应该得到我的结果。您可以使用
startOfDay.setHours(0,0,0,0)
一次性设置小时、分钟、秒和毫秒。看见
  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);
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)