如何计算某个位置打开和关闭时间与当前时间

时间:2015-12-17 22:13:51

标签: swift if-statement nsdate nsdateformatter nsdatecomponents

我想要一个餐馆应用程序,我想改进我的功能。我有餐厅打开和关闭时间 NSDate格式。我想简单检查当前哪些餐馆是开放的。我的应用程序应该询问NSDate()当前时间,并且应该检查打开和关闭时间。 If current Time <= Close Time & current Time >= Open Time餐厅应打开If current Time >= Close Time and & currentTime <= Open Time餐厅应关闭

这种情况的最佳方法是什么? 我是否应该按照我的说法去找其他的陈述?

1 个答案:

答案 0 :(得分:2)

是的,使用if-else语句(有条件的)是一种很好的方法。我就是这样做的(openTime是开放时间,closedTime是关闭时间):

// Set up calendar and unit flags

let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)

let timeUnitFlags: NSCalendarUnit = [.CalendarUnitHour, .CalendarUnitMinute]

// Retrieve components

let openComponents = calendar.components(timeUnitFlags, fromDate: openTime)
let closedComponents = calendar.components(timeUnitFlags, fromDate: closedTime)
let currentComponents = calendar.components(timeUnitFlags, fromDate: NSDate())

// Convert components into minutes into the day

let openMinutes = (openComponents.hour * 60) + openComponents.minute
let closedMinutes = (closedComponents.hour * 60) + closedComponents.minute
let currentMinutes = (currentComponents.hour * 60) + currentComponents.minute

// Check if open or closed

if currentMinutes >= openMinutes || currentMinutes <= closedMinutes {
    // Open
} else {
    // Closed
}

但是,上述代码并未涉及午夜或其他日历之后的关闭时间。