【发布时间】:2013-12-19 14:27:20
【问题描述】:
我已经写了一个方法,它接受一个 NSDate 对象,并且应该把它变成一个带有 EST 时区的 NSDate 对象。我看到其他人完成此操作的方法是使用日期格式化程序将日期更改为具有指定时区的字符串。问题是当我尝试使用“dateFromString”将该字符串更改回 NSDate 对象时。
- (NSDate*)turnToEST:(NSDate*)date
{
NSLog(@"turnToEST called with date %@", date);
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EST"]];
NSString *stringFromDate = [dateFormatter stringFromDate:date];
NSLog(@"date formatted is %@", stringFromDate);
NSDate *dateFromString = [[NSDate alloc] init];
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc]init];
[dateFormatter2 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
dateFromString = [dateFormatter2 dateFromString:stringFromDate];
NSLog(@"date has been changed to %@", dateFromString);
return date;
}
有输出...
turnToEST called with date 2013-12-19 14:15:17 +0000
date formatted is 2013-12-19 09:15:17
date has been changed to 2013-12-19 14:15:17 +0000
我不知道为什么这有什么不同
【问题讨论】:
-
- (NSDate*)turnToEST:(NSDate*)date { return date; }:P NSDate 对象不受时区限制,它们是绝对的。
标签: ios nsdate nsdateformatter