24 小时制的开门和关门时间
Opening and closing times with 24 hour clock
我正在开发一个应用程序,我需要确保其中的服务是开放的(即当前时间在服务的开放时间内)。
我使用的是 24 小时制时钟,但在编写使其正常工作的逻辑时遇到了困难,这主要是由于夜间 (0-12) 小时。我当前的解决方案如下,但正如我所提到的,它不起作用,因为如果关闭时间是 5(上午 5 点)并且当前时间是 22(晚上 10 点),则 22>5 = true,所以它 returns false 并且失败。
因此我的问题是如何有效处理凌晨 0-12 点的时间?
if (self.hour < start || self.hour >= end)
return false;
else
return true;
像这样的东西应该可以工作:
// get current hour
let calendar = NSCalendar.currentCalendar()
let now = NSDate()
let dateComponents = calendar.components(.Hour, fromDate: now)
let currentHour = dateComponents.hour
// opening hours
let startingHour = 22
let endingHour = 6
// check for different starting and ending hour
if startingHour == endingHour {
print("no valid opening hours")
// return
}
// check if current hour is within opening hours
if startingHour < endingHour {
// e.g. 7 - 15
if currentHour >= startingHour && currentHour < endingHour {
print("opened")
} else {
print("closed")
}
} else {
// e.g. 22 - 6
if currentHour >= startingHour || currentHour < endingHour {
print("opened")
} else {
print("closed")
}
}
我正在开发一个应用程序,我需要确保其中的服务是开放的(即当前时间在服务的开放时间内)。
我使用的是 24 小时制时钟,但在编写使其正常工作的逻辑时遇到了困难,这主要是由于夜间 (0-12) 小时。我当前的解决方案如下,但正如我所提到的,它不起作用,因为如果关闭时间是 5(上午 5 点)并且当前时间是 22(晚上 10 点),则 22>5 = true,所以它 returns false 并且失败。
因此我的问题是如何有效处理凌晨 0-12 点的时间?
if (self.hour < start || self.hour >= end)
return false;
else
return true;
像这样的东西应该可以工作:
// get current hour
let calendar = NSCalendar.currentCalendar()
let now = NSDate()
let dateComponents = calendar.components(.Hour, fromDate: now)
let currentHour = dateComponents.hour
// opening hours
let startingHour = 22
let endingHour = 6
// check for different starting and ending hour
if startingHour == endingHour {
print("no valid opening hours")
// return
}
// check if current hour is within opening hours
if startingHour < endingHour {
// e.g. 7 - 15
if currentHour >= startingHour && currentHour < endingHour {
print("opened")
} else {
print("closed")
}
} else {
// e.g. 22 - 6
if currentHour >= startingHour || currentHour < endingHour {
print("opened")
} else {
print("closed")
}
}