Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.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 目标c:如何将PST转换为UTC/本地时区_Ios_Objective C_Nsdate_Nsdateformatter_Nstimezone - Fatal编程技术网

Ios 目标c:如何将PST转换为UTC/本地时区

Ios 目标c:如何将PST转换为UTC/本地时区,ios,objective-c,nsdate,nsdateformatter,nstimezone,Ios,Objective C,Nsdate,Nsdateformatter,Nstimezone,我从服务器上得到的时间戳是“2015-11-12T03:54:52Z”,在PST中。我想将此字符串转换为UTC/本地时区格式。我试着用下面的方法 NSDateFormatter *pstFormatter = [[NSDateFormatter alloc] init]; [pstFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"America/Los_Angeles"]]; [pstFormatter setDateFormat:@"yy

我从服务器上得到的时间戳是“2015-11-12T03:54:52Z”,在PST中。我想将此字符串转换为UTC/本地时区格式。我试着用下面的方法

NSDateFormatter *pstFormatter = [[NSDateFormatter alloc] init];
[pstFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"America/Los_Angeles"]];
[pstFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSDate *pstQUU = [pstFormatter dateFromString:@"2015-11-12T04:03:03Z"];

Original output : 2015-11-12 04:03:03 +0000
Expected output : 2015-11-12 12:03:03 +0000 (UTC)

尝试像这样添加UTC偏移值

    NSDateFormatter *pstFormatter = [[NSDateFormatter alloc] init];
    NSTimeZone *pstTimezone = [NSTimeZone timeZoneWithName:@"America/Los_Angeles"];
    [pstFormatter setTimeZone:pstTimezone];
    [pstFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
    NSDate *pstDate = [pstFormatter dateFromString:@"2015-11-12T04:03:03Z"];

    NSTimeInterval utcSeconds = [pstDate timeIntervalSince1970] - [pstTimezone secondsFromGMT];
    NSDate *utcDate = [NSDate dateWithTimeIntervalSince1970:utcSeconds];

服务器应该使用Unix时间(UTC)为什么服务器要用PST表示时间?@duncac:server正在发送PST时间。服务器正在发送时间字符串?让服务器使用特定时区是一种糟糕的设计。UTC是在internet上交换时间/日期的标准。@Javeed您对服务器的时间戳的看法不正确。它不在PST中。字符串末尾的
Z
清楚地表明时间戳是祖鲁时间(UTC时间)。如果它真的在PST中,那么它将以
PST
-0800
@duncac结束:感谢您提供有关服务器时区的信息。我将更新我的服务器团队。它与其他格式(如CST、EST等)配合良好。。。Too在分析指定自己时区的字符串时,设置日期格式化程序的时区是没有意义的。@rmaddy timezone仅用于获取与GMT的差值。它与将字符串转换为日期对象无关。