javascript返回最接近的季度的时间

时间:2016-07-06 12:19:11

标签: javascript time

输入字段的时间如hh:mm。

任何具有

功能的人
  1. 检查时间语法是否正确。

  2. 如果还有其他任何内容,请更改为:。输入.,;分隔小时和分钟。

  3. 格式化时间最接近15分钟。例如。 05 - > 00,08 - > 15。

  4. 编辑: 输入来自:

    <input name=event_time_end id=event_time_end type=text maxlengt=5 size=5 value='' onblur='toTime(this);'>
    

    此致

3 个答案:

答案 0 :(得分:2)

您可以将分钟数除以15,然后将舍入结果乘以右四分之一的15。

&#13;
&#13;
var minutes;

for (minutes = 0; minutes < 60; minutes++) {
    console.log(minutes + ': ' + (Math.round(minutes / 15) * 15));
}
&#13;
&#13;
&#13;

答案 1 :(得分:1)

此解决方案强制执行语法,删除多余字符并将结果格式化为有效时间:

console.clear();
function closestQuarter(n) {
	return (Math.round(n % 60 / 15) * 15) % 60;
}
function toTime(str) {
	str = str
		//Replace non-digist with ':'
		.replace(/(?:\D*)?\D+/g, ':')
		//Replace first ':' with '*' to give us a target
		.replace(':', '*')
		//Remove ':'
		.replace(/:/g, '')
		//Split by '*'
		.split('*');
	//In case of empty string
	if (str.length < 1) {
		str.push('00');
	}
	//In case of only hours
	if (str.length < 2) {
		str.push('00');
	}
	for (var i = 0; i < str.length; i++) {
		if (str[i].length > 2) {
			str[i] = str[i].substr(0, 2);
		}
		if (str[i].length == 0) {
			str[i] = '00';
		}
	}
	//Force 0-23
	str[0] = (parseInt(str[0]) % 24).toString();
	//Round to quarter
	str[1] = closestQuarter(parseInt(str[1])).toString();
	//Prepend '0' if needed
	for (var i = 0; i < str.length; i++) {
		if (str[i].length < 2) {
			str[i] = '0' + str[i];
		}
	}
	//Return a ':' joined string
	return str.join(':')
}
//Tests
console.log([toTime('21:45'),
		toTime('21:4'),
		toTime('1:3'),
		toTime('1.3'),
		toTime('1.3i3'),
		toTime('13.37pm')
	]);

function displayInHTML() {
	//Get value from element
	var input = (document.getElementById("time").value).toString();
	var output = document.getElementById("output");
	output.innerHTML = toTime(input);
}
<input type="text" id="time" name="time" onkeyup="displayInHTML()"/>
<textarea style="width:100%" id="output" readonly></textarea>

答案 2 :(得分:0)

要将数分钟缩短到最接近的四分之一,您可以使用:

var x = minutes + 7;
minutes = x - (x % 15)

&#13;
&#13;
var minutes, x;
for (minutes = 0; minutes <= 50; minutes++) {
    x = minutes + 7;
    console.log(minutes + ' : ' + (x - (x % 15)));
}
&#13;
&#13;
&#13;