MZi*_*an6 2 iphone objective-c nsdate nsdateformatter ios
我正在使用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);
Run Code Online (Sandbox Code Playgroud)
当它打印这个日期时,它打印出"Thu Jan 12,2012 10:25 AM",对于"America/New_York"时区,这就是我,这是错误的.我应该是"Thu Jan 12,2012 11:25 AM"或提前一小时.有没有办法强制日光节省时间?提前致谢!
编辑:我注意到它实际上是错误地格式化月份.由于某种原因,它需要4月份才能完成1月份.为什么会这样?
当它打印这个日期时,它打印出"Thu Jan 12,2012 10:25 AM",对于"America/New_York"时区,这就是我,这是错误的.
不.夏令时直到三月才开始,所以在那个时候应用它是错误的.NSDateFormatter在这里做正确的事.
如果要强制使用特定的GMT偏移量,则应使用NSTimeZone timeZoneForSecondsFromGMT:而不是localTimeZone.