您的位置:首页 > 移动开发 > IOS开发

iOS时间转换(聊天时间)

2016-05-05 19:14 751 查看
因为最近用环信写了个聊天功能,想把用户的发送时间显示在界面上,但是当我获取环信消息的发送时间的时候发现他是以时间戳的形势存到消息中的。所以我必须把它转换为正常的时间形式并显示到界面上

所以我就封装了一个时间的转换类,把它了记录下来,下面就是代码了-挺简单的,比较容易理解

(1)TimeTool.h

#import <Foundation/Foundation.h>

@interface TimeTool : NSObject

// 定义个类方法,用来返回转换后的时间形式
+ (NSString *)timeStr:(long long)timestamp;

@end


(2)TimeTool.m

#import "TimeTool.h"
#import <UIKit/UIKit.h>

@implementation TimeTool

+ (NSString *)timeStr:(long long)timestamp
{
// 创建日历对象
NSCalendar *calendar = [NSCalendar currentCalendar];

// 获取当前时间
NSDate *currentDate = [NSDate date];

// 获取当前时间的年、月、日。利用日历
NSDateComponents *components = [calendar components:NSCalendarUnitYear| NSCalendarUnitMonth|NSCalendarUnitDay fromDate:currentDate];
NSInteger currentYear = components.year;
NSInteger currentMonth = components.month;
NSInteger currentDay = components.day;

// 获取消息发送时间的年、月、日
NSDate *msgDate = [NSDate dateWithTimeIntervalSince1970:timestamp / 1000.0];
components = [calendar components:NSCalendarUnitYear| NSCalendarUnitMonth|NSCalendarUnitDay fromDate:msgDate];
CGFloat msgYear = components.year;
CGFloat msgMonth = components.month;
CGFloat msgDay = components.day;

// 进行判断
NSDateFormatter *dateFmt = [[NSDateFormatter alloc] init];
if (currentYear == msgYear && currentMonth == msgMonth && currentDay == msgDay) {
//今天
dateFmt.dateFormat = @"HH:mm";
}else if (currentYear == msgYear && currentMonth == msgMonth && currentDay-1 == msgDay ){
//昨天
dateFmt.dateFormat = @"昨天 HH:mm";
}else{
//昨天以前
dateFmt.dateFormat = @"MM-dd HH:mm";
}
// 返回处理后的结果
return [dateFmt stringFromDate:msgDate];
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: