我正在做一个网络应用程序, 我正在努力解决有关时间百分比的问题, 我想从一天开始的时候得到开始时间的百分比。
例如,开始时间为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);
答案 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)
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的情况下为用户运行,那么您必须转到服务器端。