iPhone中NSDateFormatter时区

在iPhone应用中得到如下格式:

Tur, 18 Apr 2013 09:20:47

用下面的代码后:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
[dateFormatter setDateFormat:@"E, dd MMM yyyy HH:mm:ss"];
NSString *formattedDate = [dateFormatter stringFromDate:[NSDate date]];
[dateFormatter release];

我的iPhone时区不是US的,所以我得到下面的:

木, 18 4月 2013 09:20:47

怎么办?

如果你的 iPhone 的时区不是 US 的,那么你需要将你的 NSDateFormatter 设置成你的时区。你可以使用如下代码来设置时区:

[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];

这样,当你使用 stringFromDate: 方法转换日期时,它将使用你的时区进行转换,而不是使用 GMT 时区。


如果你想要将日期转换为不同的时区,你可以使用如下代码来设置目标时区:

[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Shanghai"]];

这样,当你使用 stringFromDate: 方法转换日期时,它将使用你指定的时区进行转换。