標籤:
1,讀取當前的日期格式,然後自動轉化為yyyy-MM-dd HH:mm:ss 0000
//日期格式器 NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; // E:星期幾 // M:月份 // d:幾號(這個月的第幾天) // H:24小時制的小時 // m:分鐘 // s:秒 // y:年 // _created_at == Thu Oct 16 17:06:25 +0800 2014 //讀取當前的日期格式,然後自動轉化為yyyy-MM-dd HH:mm:ss 0000 fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";
2,如果是真機調試,轉換這種歐美時間,需要設定locale
fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
3,字串互轉日期
//字串轉為日期 NSDate *creatDate = [fmt dateFromString:_created_at]; //日期轉為字串 NSString *str = [fmt stringFromdata:_created_at];
4,對比兩個日期的差值
//日曆對象 NSCalendar *calendar = [NSCalendar currentCalendar]; //計算兩個日期之間的差值,NSCalendarUnit枚舉代表想獲得哪些差值 NSCalendarUnit unit = kCFCalendarUnitYear | kCFCalendarUnitMonth | kCFCalendarUnitDay | kCFCalendarUnitHour | kCFCalendarUnitMinute; //獲得對比對象 NSDateComponents *cmps = [calendar components:unit fromDate:creatDate toDate:now options:0];
5,判斷是否為今天,昨天,今年
- (BOOL)isThisYear:(NSDate *)creatDate{#warning //取出當前的日期--年月日 NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *dateCmps = [calendar components:NSCalendarUnitYear fromDate:creatDate]; NSDateComponents *nowCmps = [calendar components:NSCalendarUnitYear fromDate:[NSDate date]]; return dateCmps.year == nowCmps.year;}- (BOOL)isToday:(NSDate *)creatDate{ /** 另一種方法*/ NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"yyyy-MM-dd"; NSDate *now = [NSDate date]; NSString *nowStr = [fmt stringFromDate:now]; NSString *dateStr = [fmt stringFromDate:creatDate]; return [nowStr isEqualToString:dateStr];}- (BOOL)isYesterday:(NSDate *)creatDate{ NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"dd"; NSDate *now = [NSDate date]; NSString *nowStr = [fmt stringFromDate:now]; NSString *dateStr = [fmt stringFromDate:creatDate]; BOOL isSure = NO; if (nowStr.intValue - dateStr.intValue == 1) { isSure = YES; } //WBLog(@"%d",xx); return isSure;}
6,微博時間顯示
//1,美國時間轉為中國時間//2, 轉為各種模式顯示-(NSString *)created_at{ _created_at = @"Thu Aug 26 10:35:34 +0800 2015"; //日期格式器 NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; // E:星期幾 // M:月份 // d:幾號(這個月的第幾天) // H:24小時制的小時 // m:分鐘 // s:秒 // y:年 // _created_at == Thu Oct 16 17:06:25 +0800 2014 //讀取當前的日期格式,然後自動轉化為yyyy-MM-dd HH:mm:ss 0000 fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";#warning 如果是真機調試,轉換這種歐美時間,需要設定locale fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; //微博的建立日期 NSDate *creatDate = [fmt dateFromString:_created_at]; //目前時間 NSDate *now = [NSDate date]; //日曆對象(方便兩個日期之前的差距比較) NSCalendar *calendar = [NSCalendar currentCalendar]; //計算兩個日期之間的差值,NSCalendarUnit枚舉代表想獲得哪些差值 NSCalendarUnit unit = kCFCalendarUnitYear | kCFCalendarUnitMonth | kCFCalendarUnitDay | kCFCalendarUnitHour | kCFCalendarUnitMinute; NSDateComponents *cmps = [calendar components:unit fromDate:creatDate toDate:now options:0]; if ([self isThisYear:creatDate]) { if ([self isYesterday:creatDate]) { fmt.dateFormat = @"昨天 HH:mm"; return [fmt stringFromDate:creatDate]; }else if ([self isToday:creatDate]){ if (cmps.hour > 1) { return [NSString stringWithFormat:@"%d小時前",cmps.hour]; }else if (cmps.minute > 1){ return [NSString stringWithFormat:@"%d分鐘前",cmps.minute]; }else{ return @"剛剛"; } }else{//今年其他日子 fmt.dateFormat = @"MM-dd HH:mm"; return [fmt stringFromDate:creatDate]; } }else{//非今年 fmt.dateFormat = @"yyyy-MM-dd HH:mm"; return [fmt stringFromDate:creatDate]; } return _created_at;}- (BOOL)isThisYear:(NSDate *)creatDate{#warning //取出當前的日期--年月日 NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *dateCmps = [calendar components:NSCalendarUnitYear fromDate:creatDate]; NSDateComponents *nowCmps = [calendar components:NSCalendarUnitYear fromDate:[NSDate date]]; return dateCmps.year == nowCmps.year;}- (BOOL)isToday:(NSDate *)creatDate{ /** 另一種方法*/ NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"yyyy-MM-dd"; NSDate *now = [NSDate date]; NSString *nowStr = [fmt stringFromDate:now]; NSString *dateStr = [fmt stringFromDate:creatDate]; return [nowStr isEqualToString:dateStr];}- (BOOL)isYesterday:(NSDate *)creatDate{ NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"dd"; NSDate *now = [NSDate date]; NSString *nowStr = [fmt stringFromDate:now]; NSString *dateStr = [fmt stringFromDate:creatDate]; BOOL isSure = NO; if (nowStr.intValue - dateStr.intValue == 1) { isSure = YES; } //WBLog(@"%d",xx); return isSure;}
iOS--日期