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,若是是真機調試,轉換這種歐美時間,須要設置localecode
fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
3,字符串互轉日期component
//字符串轉爲日期 NSDate *creatDate = [fmt dateFromString:_created_at]; //日期轉爲字符串 NSString *str = [fmt stringFromdata:_created_at];
4,對比兩個日期的差值orm
//日曆對象 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; }
5.時間戳string
//時間字符串 -> 時間戳 NSString *string = @"1712312312312"; NSTimeInterval second = string.longLongValue / 1000.0; //時間戳 -> NSDate NSDate *date = [NSDate dateWithTimeIntervalSince1970:second];