gpt4 book ai didi

javascript - 将 ionicTimePicker 舍入到最接近的 30 分钟间隔

转载 作者:行者123 更新时间:2023-11-29 19:13:09 24 4
gpt4 key购买 nike

ionicTimePicker 中舍入 inputTime 组件的最佳方法是什么?到最近的 30 分钟间隔?

我有一种强烈的感觉,这必须改变:

输入时间:((new Date()).getHours() * 60 * 60 + (new Date()).getMinutes() * 60),

例如:

If current time is 15:17, then return 15:30
If current time is 15:45, then return 16:00

到目前为止我的代码:

$scope.openTimePicker = function () {
var timePickerObject = {
step: 30, //Optional
callback: function (val) {
if (typeof (val) === 'undefined') {
console.log('Time not selected');
} else {
var selectedTime = new Date(val * 1000);
console.log('Selected epoch is : ', val, 'and the time is ', selectedTime.getUTCHours(), 'H :', selectedTime.getUTCMinutes(), 'M');
}
},
inputTime: ((new Date()).getHours() * 60 * 60 + (new Date()).getMinutes() * 60),
format: 24
};
ionicTimePicker.openTimePicker(timePickerObject);
};

最佳答案

您可以像这样使用舍入函数:

function getRoundedTime() {
var d = new Date();
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;
}

我试图匹配 ((new Date()).getHours() * 60 * 60 + (new Date()).getMinutes() * 60) 给出的“纪元”格式

在这里你可以看到一些测试输出:

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>

如果您总是想四舍五入到最接近的半小时,请删除“30 分钟标记前”条件,这样您最终会得到:

function getRoundedTime() {
var d = new Date();
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;
}
// Return epoch at 30 minutes past current hour
return (d.getHours() * 3600) + 1800;
}

关于javascript - 将 ionicTimePicker 舍入到最接近的 30 分钟间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37302373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com