ios根据日期获取年月日分秒及常用操作(问题)

来源:互联网 发布:linux acl mask 编辑:程序博客网 时间:2024/05/16 00:26
  //获取当前时间    NSDate *now = [NSDate date];    NSLog(@"now date is: %@", now);        NSCalendar *calendar = [NSCalendar currentCalendar];    NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;    NSDateComponents *dateComponent = [calendar components:unitFlags fromDate:now];        int year = [dateComponent year];    int month = [dateComponent month];    int day = [dateComponent day];    int hour = [dateComponent hour];    int minute = [dateComponent minute];    int second = [dateComponent second];       NSLog(@"year is: %d", year);    NSLog(@"month is: %d", month);    NSLog(@"day is: %d", day);    NSLog(@"hour is: %d", hour);    NSLog(@"minute is: %d", minute);    NSLog(@"second is: %d", second);


计算n小时后的日期

/** *  根据开始小时,分钟和时长计算结束日期 * *  @param startHour   开始日期对应的小时(以当前日期为准) *  @param startMinute 开始日期对应的分钟(以当前日期为准) *  @param endHour     结束的时长 (时长) *  @param endMinute   结束的分钟 (时长) * *  @return 结束时期 */- (NSDate *) calculateEndDate:(NSInteger)startHour startMinute:(NSInteger)startMinute endHour:(NSInteger)endHour endMinute:(NSInteger)endMinute{    NSCalendar *calendar = [NSCalendar currentCalendar];    NSUInteger unitFlags =  NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;    NSDateComponents *nowDateComp = [calendar components:unitFlags fromDate: [NSDate date]];    NSDateComponents *startDateComp = [[NSDateComponents alloc]init];    [startDateComp setYear:[nowDateComp year]];    [startDateComp setMonth:[nowDateComp month]];    [startDateComp setDay:[nowDateComp day]];    [startDateComp setHour:startHour];    [startDateComp setMinute:startMinute];    [startDateComp setSecond:0];    NSCalendar *startCal = [[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];    NSDate *startDate = [startCal dateFromComponents:startDateComp];    NSTimeZone *zone = [NSTimeZone systemTimeZone];    NSInteger interval = [zone secondsFromGMTForDate:startDate];    NSDate *localeDate = [startDate  dateByAddingTimeInterval: interval];//需要将标准时间转成本地时间    //初始化为以localeDate为基准,然后过了(endHour*3600+endMinute*60)秒的时间    NSDate *endDate =[[NSDate alloc]initWithTimeInterval:(endHour*3600+endMinute*60) sinceDate:localeDate];    return endDate;}


获取的NSDate date时间与实际相差8个小时解决方案

    NSDate *date = [NSDate date];    NSTimeZone *zone = [NSTimeZone systemTimeZone];    NSInteger interval = [zone secondsFromGMTForDate: date];    NSDate *localeDate = [date  dateByAddingTimeInterval: interval];     NSLog(@"enddate=%@",localeDate);

ios NSCalendarIdentifierGregorian日期相差8小时:http://blog.csdn.net/diyagoanyhacker/article/details/7096612

0 0
原创粉丝点击