Ios 转换PST格式NSDate的字符串日期
我想将目标C中的Ios 转换PST格式NSDate的字符串日期,ios,objective-c,nsdate,nsdateformatter,Ios,Objective C,Nsdate,Nsdateformatter,我想将目标C中的@“2016-04-15T15:00:00-07:00”转换为NSDate。我正在使用NSdateFormatter@“yyyy-MM-dd'HH:MM:ssZZZZZ”但没有获得NSDate 我必须将字符串日期从服务器设置为PST时间NSDate 代码: NSString *strDate = @"2016-04-15T22:00:00Z"; NSDate* ts_utc; NSDateFormatter* df_utc = [[NSDateFormatter alloc]
@“2016-04-15T15:00:00-07:00”
转换为NSDate
。我正在使用NSdateFormatter
@“yyyy-MM-dd'HH:MM:ssZZZZZ”但没有获得NSDate
我必须将字符串日期从服务器设置为PST时间NSDate
代码:
NSString *strDate = @"2016-04-15T22:00:00Z";
NSDate* ts_utc;
NSDateFormatter* df_utc = [[NSDateFormatter alloc] init];
[df_utc setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[df_utc setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];
ts_utc = [df_utc dateFromString:strDate];
NSDateFormatter* df_local = [[NSDateFormatter alloc] init];
[df_local setTimeZone:[NSTimeZone timeZoneWithName:@"PST"]];
[df_local setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];
NSString* ts_local_string = [df_local stringFromDate:ts_utc];
NSDate *date = [df_local dateFromString:ts_local_string];
请建议。编辑
我和你有同样的问题,我就是这样解决的
NSString *strDate = @"2016-04-15T22:00:00Z";
NSDate* ts_utc;
NSDateFormatter* df_utc = [[NSDateFormatter alloc] init];
[df_utc setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[df_utc setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];
ts_utc = [df_utc dateFromString:strDate];
NSTimeZone *destinationTimeZone = [NSTimeZone timeZoneWithName:@"PST"];
NSInteger timeZoneHourOffset = (NSInteger) ([destinationTimeZone secondsFromGMTForDate:ts_utc] / 3600.0); //geting the time offset between UTC and PST
NSDate *pstDate = [ts_utc dateByAddingTimeInterval:timeZoneHourOffset * 60 * 60]; //applying that offset into ts_utc NSDate
希望,这会让你开心 @trojanfoe-code updated确保您的区域设置为英语,否则您将在非英语区域设置时区名称时遇到问题。无论是
UTC
还是PST
都不是标准化名称。我已经测试了您的代码,它对我来说运行正常,因此我非常确定问题出在您的期望中,而不是代码中。请注意,NSDate
是一个独立于时区的时间实例。只有日期的字符串表示形式取决于时区。您的问题和代码不匹配。您说要解析格式为“2016-04-15T15:00:00-07:00”的日期字符串,但您发布的代码显示格式为“2016-04-15T22:00:00Z”的日期字符串。这些格式不一样。时区格式完全不同。不应该是'Z'
(即引用)?我想要PST时区中的日期。不UTC@NiKKi是的,但是在日期字符串的末尾有一个literalZ
,它显示为“zulu”(UTC)。如何在内部将其转换为PST与我上面代码中从字符串解析为NSDate
@特洛伊木马无关,在NSString*ts_local_string=[df_local stringFromDate:ts_utc]行
我在PST中获得字符串日期,即“2016-04-15T15:00:00-07:00”。这在PST NSDate格式中没有得到证实,在PST时区格式中,2016-04-15T22:00:00Z
的结果应该是什么样子?