目前,我的代码四舍五入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:12舍入到上午09:30,以便用户只能在间隔内进行选择吗?
if(ratio < 0.5) {
return (d.getHours() * 3600) + 1800;
}
我假设此函数花费的时间少于30分钟,并且将其返回为0分钟,例如09:12 am = 09:00 am?那么,如果这是期望的结果,为什么不只增加半个小时呢?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句