我正在尝试创建一个显示时间的select
元素:
<strong>Time:</strong>
<select name="hours" id="hours">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
</select>
:
<select name="minutes" id="minutes">
<option value="00">00</option>
<option value="15">15</option>
<option value="30">30</option>
<option value="45">45</option>
</select>
在我的JavaScript中,我试图显示当前时间。我目前的代码是四分之一小时上升或下降。所以,10:25 => 10:30 & 9:18 => 9:15
。
我想知道如何只围绕而不是四舍五入。
我的JavaScript:
var CurrentDate=new Date();
$("#hours").val(CurrentDate.getHours());
$("#minutes").val((((CurrentDate.getMinutes() + 7.5)/15 | 0) * 15) % 60);
答案 0 :(得分:3)
试试这段代码:
var minutes = (parseInt((CurrentDate.getMinutes() / 15)) + 1) * 15;
minutes = minutes >= 60 ? minutes - 60 : minutes;
$("#minutes").val(minutes);
var minutes = (parseInt((CurrentDate.getMinutes() / 15)) + 1) * 15;
此行将当前minuts除以15,并将结果解析为整数,以切断浮点数,并添加+1以对其进行舍入。然后乘以15得到当前季度小时的正确分钟数
minutes = minutes >= 60 ? minutes - 60 : minutes;
检查结果分钟是否大于60,如果是,则减去60而不是&#34;过冲&#34; 60分钟
$("#minutes").val(minutes);
设置给定标记的值
答案 1 :(得分:2)
此代码将“一小时”划分为4个间隔(0,1,2或3)(而不是60)。然后将其乘以15,得到00
,15
,30
或45
。
在0到14分钟之间,该季度将显示“0”,在15到30之间将显示“15”,依此类推。
var CurrentDate=new Date();
$("#hours").val(CurrentDate.getHours());
$("#minutes").val(parseInt(CurrentDate.getMinutes()/15)*15);
编辑:我误解了这个问题,所以为了向上四分之一,我们应该使用Math.ceil()
(或Math.round()
,如果你喜欢到最接近的那个)我会而是做:
var CurrentDate=new Date();
var quarter = Math.ceil(CurrentDate.getMinutes()/15)*15;
$("#minutes").val(quarter%60);
$("#hours").val(parseInt(quarter/60)+CurrentDate.getHours());
但通常,这种时钟仅显示过去几分钟(意味着如果小时超过29分钟,我们通常仍会显示15分钟,因为它还不是30分钟)