目前,我的代码在 a.setMinutes(29)
处向下舍入为 0 分钟。我如何将其四舍五入到 30 分钟,这样只要一个值在 30 分钟标记之前,它就会返回 30 分钟的纪元。我在预约系统中使用此功能,因此用户应该无法在过去进行预约。
function getRoundedTime(inDate) {
var d = new Date();
if(inDate) {
d = inDate;
}
var ratio = d.getMinutes() / 60;
// Past 30 min mark, return epoch at +1 hours and 0 minutes
if(ratio > 0.5){
return (d.getHours() + 1) * 3600;
}
// Before 30 minute mark, return epoch at 0 minutes
if(ratio < 0.5) {
return d.getHours() * 3600;
}
// Right on the 30 minute mark, return epoch at 30 minutes
return (d.getHours() * 3600) + 1800;
}
var a = new Date();
var b = new Date();
var c = new Date();
a.setMinutes(29);
b.setMinutes(30);
c.setMinutes(31);
var aNode = document.createTextNode("Time at " + a.getMinutes() + " minutes yields: " + getRoundedTime(a) + ", ");
var bNode = document.createTextNode("Time at " + b.getMinutes() + " minutes yields: " + getRoundedTime(b) + ", ");
var cNode = document.createTextNode("Time at " + c.getMinutes() + " minutes yields: " + getRoundedTime(c));
var target = document.getElementById("t");
target.appendChild(aNode);
target.appendChild(bNode);
target.appendChild(cNode);
<div id="t">
</div>
我尝试将代码更改为:
// Before 30 minute mark, return epoch at 30 minutes
if(ratio < 0.5) {
return ((d.getHours() * 3600) + 1800)
}
但是,如果时间为 10:04,则返回 +1 小时 30 分钟的纪元。
最佳答案
我想我理解你的问题。 您希望将 09:12am 向上舍入为 09:30am,以便用户只能选择间隔吗?
if(ratio < 0.5) {
return (d.getHours() * 3600) + 1800;
}
我假设这个函数花费的时间少于 30 分钟,并将其返回为 0 分钟。上午 09:12 = 上午 09:00?那么,如果这是想要的结果,为什么不直接增加半个小时呢?
关于javascript - 在 30 分钟而不是 0 分钟返回纪元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37342324/