使用 NSDate 创建一个 6 小时的日期窗口
Posted
技术标签:
【中文标题】使用 NSDate 创建一个 6 小时的日期窗口【英文标题】:Using NSDate to create a 6 hour date window 【发布时间】:2014-09-18 06:14:00 【问题描述】:我在一个数组中有一堆 NSDates。我需要生成一个函数,将每个日期变成一个数字(6 小时窗口),如下所示:
Sept 17, 2014 12:00am to 5:59am = 2014-09-17-1
Sept 17, 2014 6:00am to 12:00pm = 2014-09-17-2
Sept 17, 2014 12:01pm to 6:00pm = 2014-09-17-3
Sept 17, 2014 6:01pm to 12:00pm = 2014-09-17-4
Sept 17, 2018 12:00am to 5:59am = 2014-09-18-1
我想传递一个日期并取回第一部分的号码。对于第 2 部分,我想获取 2 次或 12 小时前的数字?
有什么想法吗?
【问题讨论】:
【参考方案1】:您应该检查 NSCalendar 和 NSDateComponents。通常,您使用 NSCalendar 从您的 NSDate 创建 NSDateComponents。这会给你几小时、几天、几年、几个月、几秒的好整数。然后,您可以使用这些值对它们进行分组。
例如:
NSDate * someDate = [NSDate date];
NSCalendar * gregorian = [NSCalendar alloc] initWithCalendatIdentifier: NSGregorianCalenar];
NSDateComponenets * components = [gregorian components: NSDayCalendarUnit | NSHourCalendarUnit fromDate: someDate];
你可以使用dateComponents获取小时和天数,它上面的所有其他属性都是无效的。如果你想要更多,你还需要在组件的参数中指定这些单位:fromData;。
【讨论】:
以上是关于使用 NSDate 创建一个 6 小时的日期窗口的主要内容,如果未能解决你的问题,请参考以下文章
将(日期+时间)从 NSString 转换为 NSDate 并添加一些小时
NSDateComponents - 结合日期和时间会损失 1 小时?