根据时区创建NSDate对象

时间:2011-07-18 10:30:56

标签: iphone cocoa-touch ios4 nsdate nsdateformatter

我从我的应用程序中获得以下日期格式。

07/18/2011/04/45/EDT

我将其子串到“07/18/2011/04/45”和“EDT”。

使用以下代码我撰写日期。

   NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
   [dateFormatter setDateFormat:@"MM/dd/yyyy/HH/mm"];
   [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EDT"]];

   NSDate *currentServerDate = [dateFormatter dateFromString:formattedDateString];
   NSLog(@"currentServerDate %@",currentServerDate);

然而,当我打印NSDate(使用上面的格式编辑器创建)时,它打印为“2011-07-18 14:15:00 +0530”,其中+0530是我的时区。我需要编写相对于EDT时区的内容。我该怎么做?

谢谢

2 个答案:

答案 0 :(得分:3)

我认为时区可能不是你想象的那样。尝试记录timeZoneWithAbbreviation:返回的时区,并查看它告诉您的内容。另外,请查看我链接到的文档:

  

通常,不鼓励使用缩写,但“UTC”或“GMT”等唯一实例除外。时区缩写不是标准化的,因此给定的缩写可能有多种含义 - 例如,“EST”指的是美国和澳大利亚的东部时间

答案 1 :(得分:0)

默认情况下,NSDate的{​​{1}}方法会在GTM中显示您系统的区域设置偏移量的日期。如果您希望使用description使用NSDate,请使用以下方法之一:

NSLog