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);
先写到这里,以后再补充