通过夏令时将NSDate格式从UTC格式化为AEST格式

时间:2015-02-03 22:31:48

标签: objective-c iphone nsdateformatter

您好我正在尝试将我收到的UTC日期格式化为yyyyMMddHHmmss到EST澳大利亚布里斯班日期格式,但我一直落后1小时。

我使用以下功能将本地日期输入 UTC日期时间:

+(NSString *)getUTCFormatedDateString:(NSString *)localDate
{
  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
  [dateFormatter setTimeZone:timeZone];
  [dateFormatter setDateFormat:@"yyyyMMddHHmmss"];
  NSString *dateString = [dateFormatter stringFromDate:[self getDateFromString:localDate]];
  return dateString;
}

当我输入以下日期时: 03-Feb-2015 4:25 pm

20150204062510 这是UTCFormatted Date。

现在,当我尝试使用以下函数将此日期字符串转换回本地日期时间将UTC日期转换回本地日期(即澳大利亚/布里斯班)时:

+(NSString *)getESTFormatedDateStringFomUTCFormatedDateString:(NSString *)UTCdate
{   
  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];d
  NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"EST"];
  [dateFormatter setTimeZone:timeZone];
  [dateFormatter setDateFormat:@"dd-MMM-yyyy h:mm a"];

  NSString *dateString = [dateFormatter stringFromDate:[self getDateFromString:UTCdate]];

  return dateString;
}

我得到: 03-Feb-2015 3:25 pm

然而,输出应 03-Feb-2015 4:25 pm

我按照这里的建议尝试[NSTimeZone timeZoneWithName:@" AEST"]或[NSTimeZone timeZoneWithName:@"澳大利亚/布里斯班"]然后我得到 04-Feb -2015上午6:25

再次感谢你。

1 个答案:

答案 0 :(得分:0)

根据EST+[NSTimeZone abbreviationDictionary]返回的词典中的此条目,我希望EST = "America/New_York";在美国的意思是“东部标准时间”。

尝试使用Australia/Brisbane作为名称(或在+[NSTimeZone knownTimeZoneNames]中找到更合适的内容)