【发布时间】:2016-04-13 14:25:12
【问题描述】:
我想在目标 C 中将 @"2016-04-15T15:00:00-07:00" 转换为 NSDate。我正在使用 NSdateFormatter @"yyyy-MM-dd'T'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];
请提出建议。
【问题讨论】:
-
@trojanfoe - 代码更新
-
确保您的语言环境设置为英语,否则您将遇到非英语语言环境下的时区名称问题。
UTC或PST都不是标准化名称。 -
我已经测试了你的代码,它对我来说可以正常工作,所以我很确定问题出在你的期望中,而不是在你的代码中。请注意,
NSDate是一个独立于时区的时间实例。只有日期的字符串表示取决于时区。 -
您的问题和代码不匹配。您说您要解析格式为
@"2016-04-15T15:00:00-07:00"的日期字符串,但您发布的代码显示格式为@"2016-04-15T22:00:00Z"的日期字符串。这些不是相同的格式。时区格式完全不同。
标签: ios objective-c nsdate nsdateformatter