#import <Foundation/Foundation.h>
@interface ChatTimeUtil : NSObject
-(NSString *)showDate:(NSDate *)d;
//nsstring 转 nsdate
- (NSDate *)dateFromString:(NSString *)dateString format:(NSString *)format;
//
// ChatTimeUtil.m
// Test1111
//
// Created by victor-lee on 14-12-11.
// Copyright (c) 2014年 自由人. All rights reserved.
//
#import "ChatTimeUtil.h"
@interface ChatTimeUtil(){
NSDate *a;
}
@implementation ChatTimeUtil
//如果一个方法中,需要外部变量时,而且这个变量有生命周期时,就不能用工具类.
-(NSString *)showDate:(NSDate *)date{
NSDate *tmpDate =[[NSDate alloc] initWithTimeIntervalSinceReferenceDate:([a timeIntervalSinceReferenceDate] + 5*60)];
if([tmpDate earlierDate:date] == tmpDate){
a = date;
if([self isToday:date]){
return [self stringFromDate:date format:@"HH:mm"];
}else{
return [self returnDate:date];
}
}
return nil;
}
//nsstring 转 nsdate
- (NSDate *)dateFromString:(NSString *)dateString format:(NSString *)format{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat: format];
NSDate *destDate= [dateFormatter dateFromString:dateString];
return destDate;
}
//nsdate 转 nsstring
- (NSString *)stringFromDate:(NSDate *)date format:(NSString *)format{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:format];
return [dateFormatter stringFromDate:date];
}
//如果日期是一星期内,便返回星期N,如果是一星期前就返回之间的日期
-(NSString *)returnDate:(NSDate *)d{
NSDate *tmpDate =[[NSDate alloc] initWithTimeIntervalSinceReferenceDate:([[NSDate date] timeIntervalSinceReferenceDate] - 7*24*60*60)];
if([tmpDate earlierDate:d] == tmpDate){
NSDateComponents *componets = [[NSCalendar autoupdatingCurrentCalendar] components:NSWeekdayCalendarUnit fromDate:d];
;
return [ NSString stringWithFormat:@"%@ %@",[self getWeek:[componets weekday]-1],[self stringFromDate:d format:@"HH:mm"]] ;
}else{
return [self stringFromDate:d format:@"yyyy-MM-dd HH:mm:ss"];
}
}
//判断是否今天
- ( BOOL )isToday:(NSDate *)d
{
NSCalendar *calendar = [ NSCalendar currentCalendar ];
int unit = NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear ;
NSDateComponents *nowCmps = [calendar components :unit fromDate :[ NSDate date ]];
NSDateComponents *selfCmps = [calendar components :unit fromDate : d ];
return (selfCmps. year == nowCmps. year ) && (selfCmps. month == nowCmps. month ) && (selfCmps. day == nowCmps. day );
}
-(NSString *)getWeek:(NSInteger)week{
switch (week) {
case 1:
return @"星期一";
break;
case 2:
return @"星期二";
break;
case 3:
return @"星期三";
break;
case 4:
return @"星期四";
break;
case 5:
return @"星期五";
break;
case 6:
return @"星期六";
break;
default:
return @"星期日";
break;
}
}
@end
//---------------------------调用方法--------------
ChatTimeUtil *util = [[ChatTimeUtil alloc] init];
NSLog(@"%@",[util showDate:[util dateFromString:@"2014-12-8 13:26:00" format:@"yyyy-MM-dd HH:mm:ss"]]);
NSLog(@"%@",[util showDate:[util dateFromString:@"2014-12-11 16:26:00" format:@"yyyy-MM-dd HH:mm:ss"]]);
NSLog(@"%@",[util showDate:[util dateFromString:@"2014-12-11 16:30:00" format:@"yyyy-MM-dd HH:mm:ss"]]);