0

我有一个NSArrays CFAbsoluteTime。它们应该从最早到最新排序,但如果不是,我可以对它们进行排序。

我需要做的是找到最小和最大日期(例如 1 月 1 日到 1 月 5 日)并创建一个显示每天之间计数的分桶,例如:

Jan 1 - 1
Jan 2 - 0
Jan 3 - 4
Jan 4 - 0
Jan 5 - 3

类似的东西。NSDate将绝对时间转换为我可以计算的某种舍入的最简单方法是什么?中间形式对我来说并不重要。我只需要编写一个在给定日期时返回计数的函数。

4

1 回答 1

0

对于这个问题,使用 NSDate 而不是 CFAbsoluteTime,您可能会更高兴完全在 Cocoa 中工作。

适用的文档是日期和时间编程指南

您需要的一般方法是在 中工作NSCalendar,它封装了有关特定时区的所有关于每月天数、每年月数、闰年、DST 变化的所有信息。将您的NSDate实例转换为NSDateComponent,您将能够提取日期和月份数字,然后从那里分桶。

请记住,您编写的函数(在给定日期时返回计数)将隐式或显式地处理 NSCalendar 和 NSTimeZone 值。答案会因年份而异(是闰年吗?间隔是否包括闰日)和地区/日期(我们现在是否在这个位置观察夏令时?)。

于 2013-03-25T01:07:28.267 回答