NSDate和CFGregorianDate有什么区别?

时间:2012-06-19 15:11:45

标签: objective-c ios

我有一些客观的代码我正在从iPhone转换到iPad。 CFGregorianDate用于日期函数。我从未使用它,更喜欢使用NSDate。

我想把日期和格式化,所以我得到了完整的月份名称,使用格式字符串&#34; MMMM&#34;,我似乎无法使用CFGregorianDate。< / p>

两者之间有什么区别,它的用法有何不同?

1 个答案:

答案 0 :(得分:1)

来自docs

  

CFDate与其Cocoa Foundation对手NSDate进行“免费桥接”。这意味着Core Foundation类型在函数或方法调用中可与桥接的Foundation对象互换。换句话说,在您看到NSDate *参数的方法中,您可以传入CFDateRef,并且在您看到CFDateRef参数的函数中,您可以传入NSDate实例。这也适用于NSDate的具体子类。

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

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

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