导读:
一、背景简介
一般我们在请求后台数据的时候,会习惯性的加个时间戳,那么什么是时间戳呢?时间戳就是从1970年1月1日开始计时到现在所经过的时间。
二、获取代码
- 获取秒数
// 以下这个结果是10位数,interval得出的数会有6位小数,应该是精确到微秒
NSTimeInterval interval = [[NSDate date] timeIntervalSince1970];
NSInteger time = interval;
NSString *timestamp = [NSString stringWithFormat:@"%zd",time];
打印结果如下:
interval = 1494583488.766226
time = 1494583488
timestamp = 1494583488
- 获取毫秒数
// 有些要求时间精准一点,就是毫秒级别的
NSTimeInterval interval = [[NSDate date] timeIntervalSince1970] * 1000;
NSInteger time = interval;
NSString *timestamp = [NSString stringWithFormat:@"%zd",time];
打印结果如下:
// interval打印是按照%lf打印的,会有6位小数的
interval = 1494583607781.295166
time = 1494583607781
timestamp = 1494583607781
- 获取微秒数
// 有些要求时间再精准一点,就是微秒级别的
NSTimeInterval interval = [[NSDate date] timeIntervalSince1970] * 1000000;
NSInteger time = interval;
NSString *timestamp = [NSString stringWithFormat:@"%zd",time];
打印结果如下:
// interval打印是按照%lf打印的,会有6位小数的
interval = 1494583674040832.000000
time = 1494583674040832
timestamp = 1494583674040832
注意:为了防止溢出,基本上时间戳传给后台或者后台返回给我们的都是字符串类型的。
扩展
拿到当前的时间date:
NSDate *date = [NSDate date];
NSLog(@"date = %@",date);
打印结果如下:
2017-08-18 21:48:30.151130+0800 DifferenceTimeDemo[13529:6656910] date = Fri Aug 18 21:48:30 2017
但是如果其中打印的时候有夹扎着中文的话,如下,并且默认时区是0时区:
NSDate *date = [NSDate date];
NSLog(@"date时间 = %@",date);
打印结果如下:
2017-08-18 21:58:23.574113+0800 DifferenceTimeDemo[13546:6661209] date时间 = 2017-08-18 13:58:23 +0000
PS: 加了中文打印的话就会按照中国这边的习惯来格式化时间
根据date来格式化时间
NSDate *date = [NSDate date];
NSLog(@"date时间 = %@", date);
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
NSString *dateStr = [formatter stringFromDate:date];
NSLog(@"字符串时间 = %@", dateStr);
打印结果如下:
2017-08-18 22:01:28.330967+0800 DifferenceTimeDemo[13549:6662914] 字符串时间 = 2017-08-18 22:01:28 +0800
PS: 一般格式化都会按照如下来设置的,Z表示时区,一般不会加
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
PS: 默认一般是按照当地的时区来格式化的,如果特殊设置了时区的话,如下:
//东八区时间
formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
具体请参见:iOS时区、时间格式NSDate、时间戳,作者写的很好啊!以上!!!