美文网首页iOS 知识点
iOS之获取时间戳

iOS之获取时间戳

作者: KODIE | 来源:发表于2017-05-13 00:03 被阅读87次

导读:

iOS时区、时间格式NSDate、时间戳

一、背景简介

一般我们在请求后台数据的时候,会习惯性的加个时间戳,那么什么是时间戳呢?时间戳就是从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、时间戳,作者写的很好啊!以上!!!

嘬奶.gif

相关文章

网友评论

    本文标题:iOS之获取时间戳

    本文链接:https://www.haomeiwen.com/subject/zlhtxxtx.html