最近开发项目中遇到时间转的问题,当从服务端传回时间到客户端,而这个时间确是时间戳,并且是13位,如果是普通的字符串比如“2015-09-24 19:00:000” 这样转化是比较简单,但是时间戳不是这样的,iOS生成的时间戳是10位,所以说需要进行转换。下面就直接上代码了, 看的看得清晰:
服务器传过来的时间戳为:NSString * str = @”/Date(1467941400000)/”这个格式的
- (NSString *)interceptTimeStampFromStr:(NSString *)str{
if (!str || [str length] == 0 ) { // 字符串为空判断
return @"";
}
NSMutableString * muStr = [NSMutableString stringWithString:str];
NSString * timeStampString = [NSString string];
// 取出括号内的时间戳
NSRange startRang = [muStr rangeOfString:@"("];
NSRange endRang = [muStr rangeOfString:@")"];
if (startRang.location != NSNotFound) {
// 左边括号位置
NSInteger loc = startRang.location;
// 右边括号距离左边括号的长度
NSInteger len = endRang.location - startRang.location;
// 截取括号时间戳内容
timeStampString = [muStr substringWithRange:NSMakeRange(loc + 1,len - 1)];
}
// 把时间戳转化成时间
NSTimeInterval interval=[timeStampString doubleValue] / 1000.0;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:interval];
NSDateFormatter *objDateformat = [[NSDateFormatter alloc] init];
[objDateformat setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
NSString * timeStr = [NSString stringWithFormat:@"%@",[objDateformat stringFromDate: date]];
return timeStr;
}