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

  //获取当前时间
    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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值