时间戳转成NSDate类型后,存在8小时误差。
原因是:
[NSDate dateWithTimeIntervalSince1970:time];
这种方式会修改解析的时区, 导致和北京时间有误差。
解决方案:
NSTimeInterval time = [currentString doubleValue];
NSDate *detaildate = [NSDate dateWithTimeIntervalSince1970:time];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss"];
NSString*currentDateStr = [dateFormatter stringFromDate:detaildate];
NSLog(@"当前时间%@",currentDateStr);
// 当前时间2023-10-13 17:40:37
// -- 获取当前时间戳
NSString * currentString = [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970]];
NSLog(@"获取当前时间戳:%@",currentString);
// 获取当前时间戳:1697190037.687395
// -- 时间戳直接转换日期格式
NSTimeInterval time = [currentString doubleValue];
NSDate *detaildate = [NSDate dateWithTimeIntervalSince1970:time];
NSLog(@"日期格式:%@",detaildate);
// 日期格式:2023-10-13 09:40:37 +0000
// -- 格式话后的日期
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss"];
NSString*currentDateStr = [dateFormatter stringFromDate:detaildate];
NSLog(@"当前时间%@",currentDateStr);
// 当前时间2023-10-13 17:40:37
// --
NSDate * changeDate = [dateFormatter dateFromString:currentDateStr];
NSLog(@"转换完成后时间格式:%@",currentDateStr);
// 转换完成后时间格式:2023-10-13 17:40:37
网友评论