CFDate学习笔记

1、CFDateRef

  CFDateRef是储存日期和时间的一种数据类型,可与NSDate相互转换如:

    NSDate *currDate = [NSDate date];
    CFDateRef currDateRef = (CFDateRef)currDate;
    NSDate *currDate2 = (NSDate *)currDateRef;

2、CFAbsoluteTime  

  CFAbsoluteTime是一个double类型。它的值取决于 基准值为2001-1-1 00:00:00GMT的时间的秒数。一个数值可以表示一个对应的日期和时间。

  它可与CFDateRef相互转化,方法如下:

CF_EXPORT
CFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at);

CF_EXPORT
CFAbsoluteTime CFDateGetAbsoluteTime(CFDateRef theDate);

  获取当前时间的CFAbsoluteTime值:

CFAbsoluteTime CFAbsoluteTimeGetCurrent(void);

  根据CFAbsoluteTime来获取是周几、一个月的第几天、一年的第几周:

CF_EXPORT
SInt32 CFAbsoluteTimeGetDayOfWeek(CFAbsoluteTime at, CFTimeZoneRef tz);

CF_EXPORT
SInt32 CFAbsoluteTimeGetDayOfYear(CFAbsoluteTime at, CFTimeZoneRef tz);

CF_EXPORT
SInt32 CFAbsoluteTimeGetWeekOfYear(CFAbsoluteTime at, CFTimeZoneRef tz);

3、CFGregorianDate  

  CFGregorianDate是一个结构体,包含了年月日,时分秒六个字段。我们可以通过设定timeZone来将它与CFAbsoluteTime进行转换

CF_EXPORT
CFAbsoluteTime CFGregorianDateGetAbsoluteTime(CFGregorianDate gdate, CFTimeZoneRef tz);

CF_EXPORT
CFGregorianDate CFAbsoluteTimeGetGregorianDate(CFAbsoluteTime at, CFTimeZoneRef tz);

4、CFGregorianUnits

  CFGregorianUnits是类似于CFGregorianDate的结构体,但是它们表示的意思完全不同。CFGregorianUnits是表示时间间隔,因此它可以表示更大的值,比如

超过24的hour对它是有意义的。我们可以通过下面的方法使用改对象进行时间的相加。

CFAbsoluteTime CFAbsoluteTimeAddGregorianUnits(CFAbsoluteTime at, CFTimeZoneRef tz, CFGregorianUnits units);

 

  先写到这里,以后再补充

posted @ 2012-11-26 21:44  fengnianji  阅读(1042)  评论(0编辑  收藏  举报