iOS时间戳

概括

指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

 

iOS中的应用

 [[NSDate date] timeIntervalSince1970] 可以获取到后面的毫秒、微秒 ,但是在保存的时候省略掉了小数点后面的数值。如一个时间戳不省略的情况下为 1395399556.862046 ,省略掉后为一般所见 1395399556 。所以想取得毫秒时用获取到的时间戳 *1000 ,想取得微秒时 用取到的时间戳 * 1000 * 1000 。这样就解释了上面的10位数值的问题,当你取毫秒的时候,就会变成13位数值了。 
 
e.g
long long time = [self getDateTimeTOMilliSeconds:[NSDate date]];
NSLog(@"%llu",time);

NSDate *dat = [self getDateTimeFromMilliSeconds:time];
NSDateFormatter * formatter = [[NSDateFormatter alloc ] init];
[formatter setDateFormat:@"YYYY-MM-dd hh:mm:ss.SSS"];
NSString *date = [formatter stringFromDate:dat];
NSString *timeLocal = [[NSString alloc] initWithFormat:@"%@", date];
NSLog(@"\n%@", timeLocal);

//将时间戳转换为NSDate类型
-(NSDate *)getDateTimeFromMilliSeconds:(long long) miliSeconds
{
NSTimeInterval tempMilli = miliSeconds;
NSTimeInterval seconds = tempMilli/1000.0;//这里的.0一定要加上,不然除下来的数据会被截断导致时间不一致
NSLog(@"传入的时间戳=%f",seconds);
return [NSDate dateWithTimeIntervalSince1970:seconds];
}

//将NSDate类型的时间转换为时间戳,从1970/1/1开始--精确到毫秒
-(long long)getDateTimeTOMilliSeconds:(NSDate *)datetime
{
NSTimeInterval interval = [datetime timeIntervalSince1970];
NSLog(@"转换的时间戳=%f",interval);
long long totalMilliseconds = interval*1000 ;
NSLog(@"totalMilliseconds=%llu",totalMilliseconds);
return totalMilliseconds;
}

  

 
 

posted on 2017-08-17 10:24  liwuking  阅读(161)  评论(0编辑  收藏  举报

导航