欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS开发Debug之date转换string-8小时问题

程序员文章站 2022-05-01 17:37:01
1.转换string多了8小时 ?- (NSString*)dateAsString:(NSDate*)date { NSTimeZone *timeZone=[N...
1.转换string多了8小时
?- (NSString*)dateAsString:(NSDate*)date {


NSTimeZone *timeZone=[NSTimeZonetimeZoneWithName:@"UTC"];


NSDateFormatter *formatter=[[NSDateFormatteralloc] init];


[formatter setDateFormat:@"yyyy-MM-dd HH:mm"];


[formatter setTimeZone:timeZone];


NSString * timeString = [formatter stringFromDate:date];


return timeString;


}



使用方法:timeString = [self dateAsString:date];


原因:无论环境是使用12小时制还是24小时制,yyyy-MM-dd HH:mm:ss返回都是24小时制。设置TimeZone为UTC ,这样使得转换时间不会出现8小时误差


?2.转换string少了8小时
?- (NSString*)dateAsString:(NSDate*)date {


NSDateFormatter *formatter=[[NSDateFormatter alloc]init];


formatter.dateFormat=@"yy-MM-dd HH:mm:ss";


NSString *timeStr=[formatter stringFromDate:date];


NSTimeZone *timeZone=[NSTimeZone systemTimeZone];


NSInteger seconds=[timeZone secondsFromGMTForDate:date];


NSDate *newDate=[date dateByAddingTimeInterval:seconds];


NSString *newTimeStr=[formatter stringFromDate:newDate];


return timeString;


}



使用方法:timeString = [self dateAsString:date];