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; }