在我的计划中,我有NSArray
个各种日期和时间,存储为字符串,格式如下:@[@"07:23",@"18:09",@"13:55"];
当我使用NSDateFormatter
将这些转换为NSDate
时,时间是正确的,但会添加年/月/日信息。
我创建的数组是公交时刻表的列。对于阵列所代表的任何停止,每个条目都是一个时隙。我的应用程序需要占用当前时间:[NSDate date]
并按顺序查看数组中的下一个时间。我只是想在下一班车到达时显示。
我曾想过使用-[NSDate's laterDate:]
将数组的每个元素与当前日期和时间进行比较,但问题是当我将字符串转换为NSDate
个对象时,它会给它们一些随机的日子像13:55:00 January 1st, 2001
这样的月份总是在当前日期之前,所以我的测试不起作用。
我可以找到一些真正悲惨的McGuyvered的解决方法,但我更喜欢干净的东西。
我想知道的是这些事情:
NSDate
?NSDateComponents
和NSCalendar
?我可以在他们进入阵列时操纵它们。答案 0 :(得分:3)
我可以从NSDate中删除日/月/年部分吗?
没有。 NSDate仅仅是一个时间点,从某个参考日期开始是几秒钟。将该瞬间描述为某些年/月/日取决于当地日历。例如,我输入的[NSDate date]
的“日期”是我住的28,但是日本的NSDate值是29。
是否可以轻松设置每个对象的日/月/年 NSMutableArray到今天?不使用NSDateComponents和 NSCalendar?
没有。这就是NSDateComponents的用途。
否则,是否有更好,更清洁的解决方案 下一个即将到来的时段?我愿意改变整个格式 必要时来自数组。
使用NSCalendar的-components:fromDate:
获取与[NSDate date]
匹配的NSDateComponents对象。用到达时间的小时/分钟/秒替换小时/分钟/秒组件:这是今天的到达时间。添加一个日期组件:这是明天的到达时间。 (周末和假日时间表会导致额外的复杂性;工作日组件可能会有用。)使用NSCalendar的-dateFromComponents:
转换回NSDate并在那里执行日期比较。