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