我正在使用 NSDate 格式化程序从 Facebook Graph API 请求(格林威治标准时间)中获取日期并将其转换为用户的本地时区。我可以很好地读取日期并设置其新时区,但是当我打印出新日期时,它似乎没有考虑夏令时。
下面的时间实际上来自请求,但例如在这里我只是输入来自 Facebook 响应的标准时间字符串
NSString *time = @"2012-04-12T15:25:09+0000"
NSTimeZone *localZone = [NSTimeZone localTimeZone];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:localZone];
[formatter setDateFormat:@"yyyy-mm-dd'T'HH:mm:ssZZZZ"];
NSDate *date = [formatter dateFromString:time];
[formatter setDateFormat:@"eee MMM dd, yyyy hh:mm a"];
NSString *dateStr = [formatter stringFromDate:date];
NSLog(@"%@",dateStr);
当它打印这个日期时,它会打印出“2012 年 1 月 12 日星期四上午 10:25”,这对于我所在的“美国/纽约”时区来说是错误的。我应该是“2012 年 1 月 12 日星期四上午 11:25”或提前一小时。有没有办法强制夏令时?提前致谢!
编辑:我注意到它实际上错误地格式化了月份。由于某种原因,它需要四月并成为一月。为什么会这样?