设为首页收藏本站

融智技术学院

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 485|回复: 0

【iPhone开发每日一问】在iOS中,如何将一个日期字符串解析成NSDate对象?

[复制链接]
MrLi 发表于 2013-11-2 15:00:02 | 显示全部楼层 |阅读模式
:在一个iPhone应用程序中,我尝试从xml中解析一个日期字符串成为一个NSDate对象。
我记得这个问题以前已经被问过了,然而,我相信我有一个正确的代码,但是它没有运行。我使用的代码有什么问题吗?
我需要解析的日期字符串是:
  1. 2011-01-21T12:26:47-05:00
复制代码

我使用了以下的代码解析它:
  1. self.dateFormatter = [[NSDateFormatter alloc] init];
  2.     [self.dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
  3.     [self.dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
  4.     [self.dateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];
  5. ...
  6. else if([elementName isEqualToString:kUpdated]){
  7.     self.currentQuestion.updated = [self.dateFormatter dateFromString:self.currentParsedCharacterData ];
  8. }
复制代码

对于任何的帮助非常有好的。谢谢!
基于某一个人的参考链接,我确定有如下的问题:
  1. else if([elementName isEqualToString:kLastOnDeck]){
  2.     NSString *dateStr = self.currentParsedCharacterData;
  3.     // we need to strip out the single colon
  4.     dateStr = [dateStr stringByReplacingOccurrencesOfString:@":"
  5.                                                  withString:@""
  6.                                                     options:0
  7.                                                       range:NSMakeRange([dateStr length] - 5,5)];
  8.     self.currentQuestion.lastOnDeck = [dateFormatter dateFromString:dateStr];
  9. }
复制代码

答:你不需要在设置格式这条语句中使用很多单引号(仅需要在非date/time字符串上),所以改变以下代码:
  1. [self.dateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];
复制代码

将其改为如下代码:
  1. [self.dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
  2. ...
  3. self.currentQuestion.updated = [self.dateFormatter dateFromString:[self.currentParsedChacurrentParsedCharacterData stringByReplacingOccurrencesOfString:@":" withString:@"" optioptions:0 range:NSMakeRange([self.currentParsedCharacterData length] – 5,5)]];
复制代码

文档的链接:
http://developer.apple.com/libra ... /uid/TP40002369-SW1
Unicode格式模式的链接
tp://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns
处理TimeZone使用冒号(+00:00)
http://petersteinberger.com/2010 ... r-and-0000-parsing/
您需要登录后才可以回帖 登录 | 注册

本版积分规则

新突破电商

小黑屋|手机版|Archiver|融智技术学院 ( 京ICP备09018999号  

GMT+8, 2018-12-15 13:03

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表