javascript - 在 30 分钟而不是 0 分钟返回纪元

标签 javascript

目前,我的代码在 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/

相关文章:

javascript - 无法从 'react/lib/React' 找到模块 'ReactTestUtils.js'

javascript - 在客户端 (Angular) 和服务器 (NodeJs) 上共享对象定义

javascript - Outlook 和 OWA - 使用 Apps for Office 生成 token 并发出 EWS 请求失败

javascript - JSnice 如何进行重命名 Javascript 变量的 STATISTICAL RENAMING?

JavaScript 正则表达式替换 - 为什么一个可以工作,而另一个却不能?

javascript - ngRepeat + map.invalidateSize() 的 ng Leaflet 指令问题

php - 使用 php 服务器时间设置 Javascript 时间?

php - 使用 FlexSlider JS 制作多个 Vimeo 视频

javascript - AngularJS : How to bind data from dynamic url?

javascript - 覆盖/拦截所有 jQuery 函数