将时间数组与javascript中的时间进行比较
我有一个从数据库获取的时间数组,并将其传递给javascript。当我提醒数组变量时,我会得到时间数组(在我的例子中,有两个不同的时间,比如12:00和14:30),让数组为将时间数组与javascript中的时间进行比较,javascript,arrays,Javascript,Arrays,我有一个从数据库获取的时间数组,并将其传递给javascript。当我提醒数组变量时,我会得到时间数组(在我的例子中,有两个不同的时间,比如12:00和14:30),让数组为newdate。 在javascript中,我还接受另一个时间,比如说date=(12:00),我想比较这两个计时。newdate中的两个值都与date进行比较。 怎么做? 我尝试了以下方法 var newdate = new Array(); newdate = $('#newdate').val(); for(i=0;i
newdate
。
在javascript中,我还接受另一个时间,比如说date=
(12:00),我想比较这两个计时。newdate
中的两个值都与date
进行比较。
怎么做?
我尝试了以下方法
var newdate = new Array();
newdate = $('#newdate').val();
for(i=0;i<newdate.length;i++) {
alert(newdate[i]);
}
if (newdate >= date) {
alert("enable");
}
else {
alert("disbale");
}
var newdate=newarray();
newdate=$('#newdate').val();
对于(i=0;i=date){
警报(“启用”);
}
否则{
警报(“解散”);
}
当我提醒上面的问题时,我得到1,2,:,0,0,这是错误的,我想要12:00的问题
考虑以下示例:
var string = '12:30';
for (var i = 0; i < string.length; i++) {
console.log(string[i]); // will print each character separately
}
解决方案
以下是如何针对集合测试时间:
var temp, item, gte;
var time = '12:15';
var collection = ['12:45', '12:00', '12:15', '12:30', '13:00', '11:00'];
var temp = time.split(':');
for (var i = 0; i < collection.length; i++) {
item = collection[i].split(':');
gte = +temp[0] >= +item[0];
if (gte) gte = +temp[1] >= +item[1];
// if (gte) gte = +temp[2] >= +item[2]; // uncomment to check seconds
if (gte) alert(time + ' >= item #' + i);
}
进一步
将收集减少到通过函数测试的次数:
function filter(collection, fn) {
var i = 0,
l = collection.length,
result = [],
item;
for (; i < l; i++) {
item = collection[i];
if (fn(item, i)) result.push(item);
}
return result;
}
用法示例:
var collection = ['12:45', '12:00', '12:15', '12:30', '13:00', '11:00'];
var gteNoon = filter(collection, gte('12:00'));
var lteNoon = filter(collection, lte('12:00'));
var aroundNoon = filter(collection, function (time) {
return time.slice(0, 2) === '12';
});
gteNoon; // ["12:45", "12:00", "12:15", "12:30", "13:00"]
lteNoon; // ["12:00", "11:00"]
aroundNoon; // ["12:45", "12:00", "12:15", "12:30"]
只需使用
:
进行拆分,然后进行比较,否则将比较整个值。不需要for
循环我没听明白你的意思?我是JavaScription新手你在比较时间字符串的每个字符?你的值只有时间吗?就像12:00
是12:00:00
。这是我从数据库中获取的内容,并将其传递给JavaScriptOverwrited,时间为12:00:00和14:30:00string@VidicjQuery.val()
返回字符串、数字或数组。但更重要的是,javascript中没有time
类型。我已经用一个工作示例更新了答案。@Vidic您可以相信我:)事实上,newdate
是一个字符串这一事实很明显,因为循环会一个接一个地提醒一个字符,这就是字符串的行为:)
function gte(time) {
time = time.split(':');
return function (item) {
item = item.split(':');
return +time[0] < +item[0] || (
+time[0] === +item[0] && +time[1] <= +item[1]
);
};
}
function lte(time) {
time = time.split(':');
return function (item) {
item = item.split(':');
return +time[0] >= +item[0] && +time[1] >= +item[1];
};
}
var collection = ['12:45', '12:00', '12:15', '12:30', '13:00', '11:00'];
var gteNoon = filter(collection, gte('12:00'));
var lteNoon = filter(collection, lte('12:00'));
var aroundNoon = filter(collection, function (time) {
return time.slice(0, 2) === '12';
});
gteNoon; // ["12:45", "12:00", "12:15", "12:30", "13:00"]
lteNoon; // ["12:00", "11:00"]
aroundNoon; // ["12:45", "12:00", "12:15", "12:30"]