0

我想将以下内容转换NSStringNSDate@"2013-04-01T22:00:00Z"

我正在使用以下代码:

NSString *dateString = @"2013-04-01T22:00:00Z";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
NSDate *theDate = [dateFormatter dateFromString:dateString];

当我打印时,theDate我得到以下答案:2013-04-01 20:00:00 +0000

现在我想知道为什么时间是 20:00 而不是 22:00,你有什么想法吗?

谢谢!

4

2 回答 2

3

由于您的 dateFormat 未指定NSDateFormatter使用您当地时区的时区。您必须自己设置时区。字符串中的 Z 表示 GMT。

[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
于 2012-05-26T11:09:08.453 回答
1

在您的代码中尝试时区,我在您的默认时区中尝试过。它工作正常。

NSString *dateString = @"2013-04-01T22:00:00Z";
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
    [dateFormatter setTimeZone:[NSTimeZone defaultTimeZone];
    NSDate *theDate = [dateFormatter dateFromString:dateString];
于 2012-05-26T11:11:08.327 回答