我們以微信聊天為例,在消息界面的右上方有時間,當天顯示時間,以及昨天,星期幾,這些情況倦卖。以及其他的一些聊天軟件里面有多少秒之前,幾分鐘之前這樣的椿争。
然后在網(wǎng)上找了半天怕膛,沒有完全符合。想拿過來改改秦踪,改了一下感覺非常費事褐捻,然后就自己寫了。最后發(fā)現(xiàn)還是下面代碼寫法最通用椅邓。
代碼沒什么難度柠逞,修改也很方便,主要是邏輯簡單,方便使用景馁。不管你有什么日期比較需求板壮,下面的寫法絕對可以提供最多的功能。
1.將所有年月日時分秒提取出來合住,方便大家做比較.
- (NSString *)formateDate:(NSDate *)originDate
{
@try {
NSString *dateStr = nil;
// ------實例化一個NSDateFormatter對象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];//這里的格式必須和DateString格式一致
NSDate * nowDate = [NSDate date];
// ------將需要轉(zhuǎn)換的時間轉(zhuǎn)換成 NSDate 對象
NSString *originDateStr = [dateFormatter stringFromDate:originDate];
NSString *nowDateStr = [dateFormatter stringFromDate:nowDate];
// 年
NSString * yearStr = [originDateStr substringToIndex:4];
NSString * nowYear = [nowDateStr substringToIndex:4];
BOOL isSameYear = [yearStr isEqualToString:nowYear];
// 月
NSRange monthRange = NSMakeRange(5, 2);
NSString *monthStr = [originDateStr substringWithRange:monthRange];
NSString *nowMonth = [nowDateStr substringWithRange:monthRange];
BOOL isSameMonth = [monthStr isEqualToString:nowMonth];
// 日
NSRange dayRange = NSMakeRange(8, 2);
NSString *dayStr = [originDateStr substringWithRange:dayRange];
NSString *nowDay = [nowDateStr substringWithRange:dayRange];
BOOL isSameDay = [dayStr isEqualToString:nowDay];
int dayValue = nowDay.intValue - dayStr.intValue;// 天數(shù)間隔
// 時
NSRange hourRange = NSMakeRange(11, 2);
NSString *hourStr = [originDateStr substringWithRange:hourRange];
NSString *nowhour = [nowDateStr substringWithRange:hourRange];
BOOL isSameHour = [hourStr isEqualToString:nowhour];
// 分
NSRange minuteRange = NSMakeRange(14, 2);
NSString *minuteStr = [originDateStr substringWithRange:minuteRange];
NSString *nowminute = [nowDateStr substringWithRange:minuteRange];
// 秒
NSRange secondRange = NSMakeRange(17, 2);
NSString *secondStr = [originDateStr substringWithRange:secondRange];
NSString *nowSecond = [nowDateStr substringWithRange:secondRange];
/***********************需要的時間字符串**********************/
if (isSameYear) {
if (isSameMonth) {
if (isSameDay) {
}
}
}
} @catch (NSException *exception) {
return @"";
} @finally {
return @"";
}
}
2.方便需要用到顯示星期幾的
- (NSString*)weekdayStringFromDate:(NSDate*)inputDate {
NSArray *weekdays = [NSArray arrayWithObjects: [NSNull null], @"星期天", @"星期一", @"星期二", @"星期三", @"星期四", @"星期五", @"星期六", nil];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSTimeZone *timeZone = [[NSTimeZone alloc] init];
[calendar setTimeZone: timeZone];
NSCalendarUnit calendarUnit = NSCalendarUnitWeekday;
NSDateComponents *theComponents = [calendar components:calendarUnit fromDate:inputDate];
return [weekdays objectAtIndex:theComponents.weekday];
}
3.總結(jié)
總體來說并不推薦大家在iOS設備中進行轉(zhuǎn)換,大量的tableviewcell需要時間創(chuàng)建轉(zhuǎn)換,是比較好性能的. 最好讓后臺處理