iOS:发生时区问题

iOS: Timezone issue occurring

apple timezone 似乎现在对我来说有问题。我在下面测试了以下代码,但它无法正常工作。这是我到目前为止所拥有的。

 NSDate *today = [NSDate date];

 NSDateFormatter *estDf = [[NSDateFormatter alloc] init];
 [estDf setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]];
 [estDf setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

  NSString *stringDate = [estDf stringFromDate:today];
  NSDate *todaydateadjusted = [estDf dateFromString:stringDate];

  NSLog(@"Todays date is %@",[estDf stringFromDate:todaydateadjusted]);

这是我的 NSLog 响应。
Todays date is 2015-03-09 16:25:02

我预计 17:25:02 时间不是 16:25:02。由于现在是 5 点钟p.m,所以它应该打印出 17 而不是 16。还有其他人有这个问题吗?也许我的代码有问题。

现在是夏令时。你不应该改用EDT吗?

另一件事是时区名称与时区缩写。看看这个例子——我在 Swift 中写的,但我认为它应该很容易理解并翻译成 ObjC。

var now = NSDate()
var df = NSDateFormatter()
df.timeZone = NSTimeZone(abbreviation: "EDT")
//df.timeZone = NSTimeZone(name: "EDT") <- wrong
df.dateFormat = "yyyy-MM-dd HH:mm:ss"
let edt = df.stringFromDate(now)

如果您想使用完整的时区名称,例如使用 df.timeZone = NSTimeZone(name: "America/New_York")

你需要改变这个:

[estDf setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]];

对此:

[esfDf setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EDT"]];