CFDate的几个函数

CFGregorianDate CFAbsoluteTimeGetGregorianDate(CFAbsoluteTime at, CFTimeZoneRef tz);//得到当前时间
SInt32 CFAbsoluteTimeGetDayOfWeek(CFAbsoluteTime at, CFTimeZoneRef tz);得到当前时间是星期几 
SInt32 CFAbsoluteTimeGetDayOfYear(CFAbsoluteTime at, CFTimeZoneRef tz);得到当前是这一年中的第多少天 

SInt32 CFAbsoluteTimeGetWeekOfYear(CFAbsoluteTime at, CFTimeZoneRef tz);得到当前是这一年中的第多少周 

1:CFAbsoluteTime now = CFAbsoluteTimeGetCurrent ();
这个返回的是CFTimeInterval类型,这个是timeInterval是针对于2001-01-01 00:00:00 GMT的时间。正值表示在参考时间之后,负值表示在参考值之后,看到的数据基本形式是3.60125e+0.8这种形式。但是在debug中在弹出的选择show Formatted summaries,可以看到时间为@"5/31/2012 10:49:58.791747".
2:计算两个时间间隔
CFTimeZoneRef timeZone = CFTimeZoneCopySystem();
CFGregorianUnits startUnits = {-11, -5, 1, 0, 0, 0};
CFAbsoluteTime nowAdd=CFAbsoluteTimeAddGregorianUnits(now, timeZone, startUnits);
CFGregorianUnits units = CFAbsoluteTimeGetDifferenceAsGregorianUnits
    (now, nowAdd, NULL, (kCFGregorianUnitsHours | kCFGregorianUnitsMinutes));
CFStringRef output = CFStringCreateWithFormat(NULL, 0, CFSTR("hours: %d; minutes: %d"), units.hours, units.minutes);
CFShow(output);
代码第一句:系统当前时区
代码第二句:是一个结构体,表示和任何一个时间的间隔
struct CFGregorianUnits {
    SInt32 years;
    SInt32 months;
    SInt32 days;
    SInt32 hours;
    SInt32 minutes;
    double seconds;
};
typedef struct CFGregorianUnits CFGregorianUnits;
第四句:表示两个时间的间隔用CFGreorianUnits形式表示出来。
3:NSInteger weekofday=CFAbsoluteTimeGetDayOfWeek(now, CFTimeZoneCopySystem());
    NSLog(@"day:%d",weekofday);
表示这个时间是一个星期中的第几天
4:NSInteger yearOfDay=CFAbsoluteTimeGetDayOfYear(now, CFTimeZoneCopySystem());
表示这个时间是一年中的第几天
5:CFGregorianDate  gregorianStartDate = CFAbsoluteTimeGetGregorianDate(
                                                        now,
                                                        timeZone);
把CFAbsoluteTime转化成CFGregorianDate
struct CFGregorianDate {
    SInt32 year;
    SInt8 month;
    SInt8 day;
    SInt8 hour;
    SInt8 minute;
    double second;
};
typedef struct CFGregorianDate CFGregorianDate;
6:CFAbsoluteTime nowAbsolute=CFGregorianDateGetAbsoluteTime(gregorianStartDate, timeZone);
把CFGregorianDate转化成CFAbsoluteTime
7:BOOL bResult=CFGregorianDateIsValid(gregorianStartDate, kCFGregorianAllUnits);
Boolean CFGregorianDateIsValid (
    CFGregorianDate gdate,
    CFOptionFlags unitFlags
);
enum CFGregorianUnitFlags {
    kCFGregorianUnitsYears = (1 << 0),
    kCFGregorianUnitsMonths = (1 << 1),
    kCFGregorianUnitsDays = (1 << 2),
    kCFGregorianUnitsHours = (1 << 3),
    kCFGregorianUnitsMinutes = (1 << 4),
    kCFGregorianUnitsSeconds = (1 << 5),
    kCFGregorianAllUnits = 0x00FFFFFF
};
typedef enum CFGregorianUnitFlags CFGregorianUnitFlags;
这个函数用于检测CFGregorianDate有没有不符合的,象month只有12个月,days最多只有31天等等。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值