一、什么是时间戳
时间戳(Timestamp)是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。时间戳是一种时间表示方式,通常是一个整数。在计算机中广泛使用时间戳,例如Unix操作系统使用时间戳来记录文件的创建、修改,以及用户的登录和注销时间等。
二、iOS中如何获取时间戳
1.使用NSDate对象获取当前的时间戳
//获取当前时间的时间戳,单位:秒
NSTimeInterval currentTimeInterval = [[NSDate date] timeIntervalSince1970];
2.使用时间戳获取NSDate对象
//将时间戳转换成NSDate对象
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInterval];
三、iOS时间戳和时间的转换
1.时间戳转换成指定格式的时间字符串
//将时间戳转换成指定格式的时间字符串
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInterval];
NSString *timeString = [formatter stringFromDate:date];
2.指定格式的时间字符串转换成时间戳
//将指定格式的时间字符串转换成时间戳
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [formatter dateFromString:timeString];
NSTimeInterval timeInterval = [date timeIntervalSince1970];
四、时区问题
iOS中时间戳的默认时区是UTC时间,需要进行时区转换才能得到本地时间。在使用NSDateFormatter时,需要设置NSDateFormatter的timeZone属性,指定转换的时区。例如,将UTC时间转换成北京时间,需要设置timeZone为北京时区。
//将UTC时间转换成北京时间
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Shanghai"]];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInterval];
NSString *timeString = [formatter stringFromDate:date];
五、时区名称和时区缩写的转换
iOS中的时区使用封装在NSTimeZone中的实例来表示,有时需要根据时区名称或时区缩写获取对应的NSTimeZone实例。同时,也需要将NSTimeZone实例转换成时区名称或时区缩写,以便在界面中显示。
1.时区名称转换成NSTimeZone实例
NSString *timeZoneName = @"Asia/Shanghai";
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:timeZoneName];
2.时区缩写转换成NSTimeZone实例
NSString *timeZoneAbbreviation = @"GMT+0800";
NSTimeZone *timeZone = [NSTimeZone timeZoneWithAbbreviation:timeZoneAbbreviation];
3.NSTimeZone实例转换成时区名称
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
NSString *timeZoneName = [timeZone name];
4.NSTimeZone实例转换成时区缩写
NSTimeZone *timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT+0800"];
NSString *timeZoneAbbreviation = [timeZone abbreviation];