Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 转换PST格式NSDate的字符串日期_Ios_Objective C_Nsdate_Nsdateformatter - Fatal编程技术网

Ios 转换PST格式NSDate的字符串日期

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]

我想将目标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] 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是的,但是在日期字符串的末尾有一个literal
Z
,它显示为“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
的结果应该是什么样子?