【发布时间】:2012-10-02 07:21:03
【问题描述】:
我正在尝试使用以下代码解析这样的日期:2012-10-20T13:45:00+002:
NSDateFormatter* formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
NSDate *date = [formatter dateFromString:@"2012-10-20T13:45:00+002"];
但是当我尝试在其时区已经为 +2 的设备上输出时:
NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init];
[dateformatter setDateFormat:@"HH:mm"];
dateformatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"ar_EG"];
cell.infoLabel.text = [dateFormatter stringFromDate:date];
输出是:15:43 而不是应该的 13:45。 任何帮助,将不胜感激。 PS:我在 iPhone 上运行 iOS5/6,Xcode 4.5,我在模拟器和物理设备上都试过了。
【问题讨论】:
-
ZZZ 字段以分钟而不是小时表示。
-
太棒了!谢谢!这正是为什么!我也想知道为什么它会提前 2 分钟显示日期。你能告诉我正确的符号是什么吗?我尝试阅读unicode.org/reports/tr35/tr35-4.html#Date_Format_Patterns,但我不确定。
-
我相信您需要在时间戳的末尾附加一对零,以使其正确解析。
-
我试过了,但似乎不起作用:原始字符串:2012-11-25T16:00:00+002 添加零后:2012-11-25T16:00:00+00200 NSDate对象的NSLog:2012-11-25 15:58:00 +0000
-
可能是格式化程序无法处理额外的前导零。 (但你确定你将 modified 字符串传递给格式化程序,而不是原始字符串?)
标签: iphone objective-c ios