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

Posted

技术标签:

【中文标题】如何使用当前时间计算某个位置的打开和关闭时间【英文标题】:How can I calculate some location Open and Close Time with Current Time 【发布时间】:2015-12-17 22:13:50 【问题描述】:

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

这种情况的最佳方法是什么? 我应该按照我所说的那样去使用 If else 语句吗?

【问题讨论】:

一个 NSDate 是一个绝对时间点。它如何描述开放时间(这是一个经常发生的事件,例如每天早上 8 点)? 是的。我正在使用 NSDateComponents() 和 NSCalendarUnit().hour 和 .minute 来获取 openingTime 小时和分钟,并且我还必须使用 NSDateComponents 获取当前时间小时和分钟。之后,我必须使用 if else 语句检查小时和分钟。我的意思是我不知道什么是最好的方法,这是我的主要问题。 你有什么解决这个问题的建议吗? 【参考方案1】:

是的,使用 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

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

【讨论】:

以上是关于如何使用当前时间计算某个位置的打开和关闭时间的主要内容,如果未能解决你的问题,请参考以下文章

JAVA的GUI中如何实现按下某个按钮后关闭当前窗口,打开新的窗口?

如何在sql中的某个位置连续计算车辆的时间

如何使固定元素保持相对于当前顶部滚动位置?

如何在android中打开或关闭位置的响应?

打开地图屏幕时,如何将 MapView 以用户当前位置为中心?反应原生博览会

如何使地理围栏准确?