2015-11-12 59 views
1

我从服务器获取时间戳为“2015-11-12T03:54:52Z”,它位于PST中。我想将此字符串转换为UTC /本地时区格式。我以下列方式试图Objective-c:如何将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) 
+0

为什么会产生Server Express的时间值服务器应该使用的Unix时间(UTC)? –

+0

@DuncanC:服务器发送PST时间。 – Javeed

+0

服务器正在发送时间字符串?让服务器使用特定的时区是不好的设计。 UTC是通过互联网交换时间/日期的标准。 –

回答

0

尝试添加UTC抵消PST这样

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]; 
+0

它与其他格式如CST,EST等一起工作正常...... – Javeed

+0

当您解析指定自己的时区的字符串时,设置日期格式化程序的时区是没有意义的。 – rmaddy

+0

@rmaddy时区只是为了得到GMT的差异。它与将字符串转换为Date对象没有任何关系。 – Javeed