1

我有一些我正在从 iPhone 转换到 iPad 的 Objective-C 代码。CFGregorianDate 始终用于日期函数。我从未使用过它,更喜欢使用 NSDate。

我想获取日期并对其进行格式化,以便使用格式字符串“MMMM”获得完整的月份名称,而使用 CFGregorianDate 似乎无法做到这一点。

两者有什么区别,在使用上有什么不同吗?

4

1 回答 1

1

文档

CFDate 与其对应的 Cocoa 基金会 NSDate 是“免费桥接”。这意味着 Core Foundation 类型在函数或方法调用中可以与桥接的 Foundation 对象互换。换句话说,在你看到 NSDate * 参数的方法中,你可以传入一个 CFDateRef,而在你看到 CFDateRef 参数的函数中,你可以传入一个 NSDate 实例。这也适用于 NSDate 的具体子类。

所以,在使用上没有区别,真的。主要区别在于 CFDate 及其子类是遗留类型。

但是,正如已经指出的那样,CFGregorianDateCFDate. 它不存储时间戳,而是将年、月、日、小时、分钟和秒存储为单独的整数。

所以最好的办法是创建一个方法,cfGregorianToNSDate:在其中解析这些整数并构造一个新NSDate对象。

于 2012-06-19T15:14:45.587 回答