1.时间字符串的转化
//日期转时间
- (NSString *)dateToString:(NSDate *)date {
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *dateString = [dateFormatter stringFromDate:date];
return dateString;
}
//字符串转时间戳
- (NSTimeInterval)dateWithString:(NSString *)string {
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];
NSDate *date = [dateFormatter dateFromString:string];
return date.timeIntervalSince1970;
}
2.常见的时间转化
- (NSString *)formattedDateDescription
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSString *theDay = [dateFormatter stringFromDate:self];//日期的年月日
NSString *currentDay = [dateFormatter stringFromDate:[NSDate date]];//当前年月日
NSInteger timeInterval = -[self timeIntervalSinceNow];
if (timeInterval < 60) {
return @"1分钟内";
} else if (timeInterval < 3600) {//1小时内
return [NSString stringWithFormat:@"%ld分钟前", timeInterval / 60];
} else if (timeInterval < 21600) {//6小时内
return [NSString stringWithFormat:@"%ld小时前", timeInterval / 3600];
} else if ([theDay isEqualToString:currentDay]) {//当天
[dateFormatter setDateFormat:@"HH:mm"];
return [NSString stringWithFormat:@"今天 %@", [dateFormatter stringFromDate:self]];
} else if ([[dateFormatter dateFromString:currentDay] timeIntervalSinceDate:[dateFormatter dateFromString:theDay]] == 86400) {//昨天
[dateFormatter setDateFormat:@"HH:mm"];
return [NSString stringWithFormat:@"昨天 %@", [dateFormatter stringFromDate:self]];
} else {//以前
[dateFormatter setDateFormat:@"MM-dd HH:mm"];
return [dateFormatter stringFromDate:self];
}
}
3.已经知道当前时间,计算未来或者以前的时间
NSCalendar *calendar = [NSCalendar currentCalendar];
calendar.timeZone = [NSTimeZone localTimeZone];
NSDateComponents *comp = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:date];
//comp可以修改年月日等时间
[comp setDay:1];
NSDate *firstDayOfMonthDate = [calendar dateFromComponents:comp];
4.固定app的时区,不会根据位置改变(下面是东八区)
[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT+0800"]];
更多时间资料:http://my.oschina.net/yongbin45/blog/156181