2011-01-11 81 views
3

我有类似2011-01-19T20:30:00-5:00的字符串,我想将它们解析为NSDate,但我想保留原始时区。使用NSDateFormatter保留原始时区

NSDateFormatter *dateFormatter = [NSDateFormatter new]; 
[dateFormatter setDateFormat: @"yyyy-MM-dd'T'HH:mm:ssZ"]; 
NSLog(@"%@", [dateFormatter dateFromString: dateString]); 
[dateFormatter release]; 

这片断让我2011-01-20二点三十分00秒+0100这也是正确的,但我希望在保持原有的时区-0500,而不是我的本地时区+0100 NSDate的。

回答

0

首先,你应该知道的NSDate对象不存储与他们的语言环境或任何时区,并在内部他们本质上表现为自2001年1月,北京时间1的第一瞬间的秒数。

如果你能在时区中的NSTimezone对象的字符串,只是做了以下做dateFromString前:

[dateFormatter setTimeZone:timezoneForString]; 

,你会被设定。

如果您无法获得NSTimezone,而您拥有的只是一个字符串“2011-01-19T20:30:00-5:00”,那么从NSTimezone进入NSTimezone的方式并不是很好-5:00,因为并非总是以明确的方式来获得一个时区ID(例如,“美国/洛杉矶”)或时区的名称(例如,“太平洋夏令时”)从UTC偏移。所以你必须编写自己的代码来手动提取的偏移量,存储,并显示它之前添加到时间。

相关问题