检查是否“;当前时间”;介于2倍之间.但也要像前一天一样检查夜晚
check if "current time" is between 2 times. But also check for nights as the day before
我有两次,例如:10:00和1:00,现在我想检查当前时间。。。在javascript中介于这两次之间。
问题是,这种情况下的关门时间是第二天,所以它早于开门时间。我怎么能以正确的方式做这件事呢?出于某种原因,我无法绕过这件事。
我发现这可以解决问题:
var start = new Date(2012,6,20,13).getTime();
var now = new Date().getTime();
var end = new Date(2012,6,21,2).getTime();
if( (start < now ) && (now < end )) {
console.log("opened");
}
else {
console.log("closed");
}
但是我怎么能用两种字符串格式来做呢,比如10:00和2:00,因为我看不到单独放置时间的选项
var d = new Date();
var d = new Date(milliseconds);
var d = new Date(dateString);
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);
您可以使用这样一个简单的函数将您的时间转换为0:00:之后的分钟数
function getMinutes(str) {
var time = str.split(':');
return time[0]*60+time[1]*1;
}
和一个类似的函数将当前时间转换为相同的形式以便进行比较:
function getMinutesNow() {
var timeNow = new Date();
return timeNow.getHours()*60+timeNow.getMinutes();
}
然后转换打开和关闭时间,如果关闭时间在打开时间之前,则添加24小时
var now = getMinutesNow();
var start = getMinutes('10:00');
var end = getMinutes('2:00');
if (start > end) end += getMinutes('24:00');
if ((now > start) && (now < end)) { // your code here
这是我经过一番努力后得到的解决方案。在当前时间凌晨3点24分,它输出正确的信息。将now
数组更改为[13,00]
也给出了"closed"的正确结果。对其进行测试以确保其正常工作。
编辑
jQuery的加入仅仅是因为我已经脑死亡。
编辑#2
我现在(我的时间是晚上9点)注意到我的转换不起作用,它在说"关闭",而它本不应该这样做。到目前为止,这适用于我测试的所有数字。
var start_time = [20,00]
var end_time = [12,00]
//We've got the two start times as an array of hours/minutes values.
var dateObj = new Date(); //I just feel dirty making multiple calls to new Date().etc
var now = [dateObj.getHours(),dateObj.getMinutes()]; //Gets the current Hours/Minutes
if(end_time[0] < start_time[0] && now[0] < start_time[0]){
start_time[0] -= 24; //This is something I came up with because I do a lot of math.
}else if(start_time[0] > end_time[0]){
end_time[0]+=24;
}
var el=$('#result');
var start_string = to_hms_string(start_time); //the start string converted to a string format. Made comparisons easier.
var end_string = to_hms_string(end_time); //See Above
var now_string = to_hms_string(now); //Above
console.log(start_string, now_string, end_string);
var status = (start_string < now_string && now_string < end_string) ? "Open" : "Closed";
el.html(status);
//Function to_hms_string stands for "hour-minute-second" string. First name that came up.
function to_hms_string(timearr){
var minutes = 60+timearr[1];
var hours = "";
if(Math.abs(timearr[0]) < 10){
hours = "0";
}
hours = (timearr[0]<0) ? "-"+hours+Math.abs(timearr[0]) : hours+timearr[0];
return hours+":"+minutes;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="result">
PlaceHolder
</div>
您可以这样做,获取当前时间。然后根据当前时间定义开始时间和结束时间,得到明天日期的年、月、日期,在开始日期上加1,请参阅下面的代码。然后你可以比较时间和你有相同的fi条件。祝好运
var now = new Date();
var start = new Date(now.getFullYear(),now.getMonth(),now.getDate(),7).getTime();
var end = new Date(now.getFullYear(),now.getMonth(),now.getDate() + 1,2).getTime();
now = now.getTime();
if( now >= start && now < end) {
console.log("opened");
}
else {
console.log("closed");
}
***编辑**您可以在获得年份、月份和日期后将当前时间转换为毫秒。然后使用当前if条件。
if(end_time[0] < start_time[0] && now[0] < start_time[0]){
start_time[0] -= 24;
}else if(start_time[0] > end_time[0]){
end_time[0]+=24;
}
太棒了。它有效,这是正确的答案。干得好!
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 如何检查管道中未定义的项目
- 主干-不管怎样,检查事件以前是否绑定过
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 递归使用 eval() 是检查程序执行的好方法吗?
- 检查onsubmit doenst work jquery contactform上的函数
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- API密钥使用和检查示例
- 如何让程序检查所选单词中是否有按键
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 用于检查数组中是否存在元素的javascript自定义方法
- 如何检查字符串的一部分与数组匹配
- Jquery如何检查今天的时间大于使用给定时间
- 使用javascript反复检查用户在facebook上的登录状态
- 使用 jQuery 检查所有值是否为空或已填充
- 使用Javascript使用数组检查文本框中的值
- JavaScript代码未正确检查ajax请求
- 如何检查用户在html5视频播放器中观看了完整的视频
- 检查是否“;当前时间”;介于2倍之间.但也要像前一天一样检查夜晚