XCode的时间

来源:互联网 发布:网络自学网 编辑:程序博客网 时间:2024/05/19 19:30

因为需要用上时间功能,获取年月日周。所以就查找了时间类来进行。

既然是用ObjectiveC,当然要用自带的类库了。

结果

  NSDate 直接就返回时间了,但是要获得年月日要通过其它类。

  NSComp 看起来可以直接取年月日周,不过好象要经过NSCalendar周转。

     于是就这样写了:

        NSCalendar* calc = [NSCalendar currentCalendar];

        NSDateComponents* comps = [calc components:NSWeekdayCalendarUnit fromDate:now]

        int iWeek = [comps weekday];

       int iyear = [omps day];

   然后很意外的发现,星期是对的,年月日是个超大整数,,进一步尝试后。

   确认comp在构造时要指定了要返回的信息。

  也就是说comp构造后只能返回一个信息。要想读取年月日星期,就要构造四次。。。晕倒

用NSDateFormater 输出NSDate的值为字符串,再扫描出4个整数?这也太无趣了吧。


一:日期相加:用NSDateComponets 指定偏移。

    NSDateComponents* comps = [NSDateComponentsalloc];

    NSDate* nsDt = [NSDate date];

    NSDate* result =  [[NSCalendarcurrentCalendar]dateByAddingComponents:compstoDate:nsDtoptions:0 ];

二:获取年月日整数:

    NSDate* now = [NSDatedate];

   NSCalendar* calc = [NSCalendarcurrentCalendar];

    NSDateComponents* comps = [calc components:

                              NSMonthCalendarUnit|NSDayCalendarUnit|NSYearCalendarUnit

                                     fromDate:now];

    curyear = [comps year] ;

    curmonth = [comps month];

    curday = [comps day];



三:格式化返回:

    NSDateFormatter* form = [[NSDateFormatteralloc]init];

    [comps setDay:14];

    [form setDateFormat:@"yyyyMMdd"];

    NSString* nsResult = [formstringFromDate:dtDate];






补:[calc components] 中可以用|指定多个参数,这样就可以返回4个。不过感觉还是麻烦了点。