我的JavaScript有问题。我很新,所以我感谢您的帮助。
我有一种格式,其中我有一个hh:mm:ss格式的日期,并希望通过输入字段以百分比形式增加或减少hh:mm:ss的格式。百分比可以是整数或十进制数。
也就是说,在一小时内成为“示例”。
17:22:14我想增加6%,或者如果它是小数点14.3%,或者是相同的值,但为负,i。 e。减少6%或14.3%。
我有一个示例显示给定小时数的增加百分比,但是我无法做我想做的事情。
在PHP中使用此示例,我会知道日期中的百分比,但我不希望如此,我想知道如何在给定时间和javascript中增加或减少百分比。
<?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)
?>
在javascript中,我有这个示例,但反过来又有。我想要的是增加或减少,不知道给定时间的增加时间。
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);
提前致谢
最佳答案
您可以使用标准的JS对象Date();解决问题。
算法很简单:
1)将日期对象设置为当前日期或所需日期。 (今天代码中的变量)
2)确定结束日期的日期,以该日期为准
3)只寻找今天和明天之间的差异
4)现在,我们收到了直到明天(或其他日期)的剩余百分比。
5)如果您的需要通过百分比,请在最后一次使用变量之前使用100-((明天-今天)/ ONE_DAY * 100),然后再使用结果
6)用于增加/减少使用示例。
示例在这里:
const ONE_DAY = 8.64e7; // 86400000 milliseconds
let time = "08:54:33"; // Your time where your looking %
let today = new Date();
today.setHours(time.split(":")[0], time.split(":")[1], time.split(":")[2]); // Set time from what we will looking %
let tomorrow = new Date(Date.now() + ONE_DAY).setHours("0", "0", "0");
let percent = ((tomorrow - today) / ONE_DAY * 100).toFixed("2") + "%";
// it's for increase/decrease
const HOUR = 3.6e6; // 360000
const MINUTE = 6e4; // 60000
const SECOND = 1e3; // 1000
let incPercent = 0.03; // it's mean 3%
let increased = new Date(today.getTime() + (incPercent * HOUR));
关于javascript - 如何在JavaScript中以hh:mm:ss格式每次增加或减少百分比,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48967942/