如何在iOS / Swift

时间:2017-11-11 19:18:54

标签: ios swift

我是这个iOS世界的新手,试图学习如何处理日期和时间。

想象一下,我有一个Class Shop。商店有时间间隔,代表一周中每一天的开放和关闭时间。

一些上下文数据(来自数据库的示例字符串, GMT时区):

Monday: "08:00:00-13:00:00, 15:00:00-18:00:00"
Tuesday:"09:00:00-13:00:00, 15:00:00-19:00:00"
Wednesday: "15:00:00-23:59:59"
Thursday: "00:00:00-08:00:00"
etc..
例如,星期一必须存储2个时间间隔。

我的问题是如何在Class中存储这些数据(DateIntervals数组?TimeIntervals?或其他更合适的类?)并获取当前时间来检查商店是否被打开。

2 个答案:

答案 0 :(得分:0)

iOS(和Mac OS)的本机日期格式是Date对象。 Date对象代表并且及时,与时区无关。然后使用DateFormatter将日期转换为特定时区的字符串表示形式。

但是,在您的情况下,您需要在各种不同的日期表示一周中的几天的计时器范围。

您应该阅读Xcode文档中的Calendar类引用。特别感兴趣的是date(bySetting:value:of:)方法,它允许您从给定日期开始并通过更改各种日期组件的值来计算新日期。

答案 1 :(得分:0)

每天都有一组时间间隔。因此,您需要一种方法来存储一周中给定的一天,一个或多个时间间隔。您的时间间隔有开始时间和结束时间。每个都需要用小时,分钟和可选的秒表示。

使用该信息,您可以获得当前日期/时间并将其拆分为组件。获取工作日,小时,分钟和秒。使用工作日,您可以获得适当的时间间隔。然后你可以迭代这些间隔,看看当前的小时,分​​钟,秒是否介于其中一个间隔之间。

这一切都假定对于给定的业务,您的时间间隔(开放时间)是在给定业务的当地时间内指定的。

将当前日期/时间转换为其组件时,应确保将日历的时区设置为与相关业务的时区相匹配。

不需要对任何日期进行比较。您希望将当前日期的小时/分钟/秒与打开时间的小时/分钟/秒进行比较。