Objective c NSDateFormatter dateFromString转换
我在将NSString对象转换为NSDate时遇到问题。以下是我想做的: 我正在从internet下载RSS消息。我用NSXMLParser解析了整个消息。在那之后,我有一些部分,比如,或保存到特定的NSString。我想将元素(包括RSS消息的发布日期)转换为NSDate,这样我就可以对它执行一些操作,比如对日期对象执行一些操作(例如排序、在时钟上显示等等)。以下是我儿子的样子: “2013年9月25日星期三12:56:57 GMT” 我尝试通过以下方式将其转换为NSDate:Objective c NSDateFormatter dateFromString转换,objective-c,nsdate,nsdateformatter,Objective C,Nsdate,Nsdateformatter,我在将NSString对象转换为NSDate时遇到问题。以下是我想做的: 我正在从internet下载RSS消息。我用NSXMLParser解析了整个消息。在那之后,我有一些部分,比如,或保存到特定的NSString。我想将元素(包括RSS消息的发布日期)转换为NSDate,这样我就可以对它执行一些操作,比如对日期对象执行一些操作(例如排序、在时钟上显示等等)。以下是我儿子的样子: “2013年9月25日星期三12:56:57 GMT” 我尝试通过以下方式将其转换为NSDate: *//theS
*//theString is NSString containing my date as a text
NSDate *dateNS = [[NSDate alloc] init];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy hh:mm:ss ZZZ"];
dateNS = [dateFormatter dateFromString:theString];*
但是,在执行上述代码之后,dateNS始终显示为(null)
我的问题很简单:将日期格式如下的NSString转换为NSDate对象的正确方法是什么
顺便说一下,我已经看过这个网站了
似乎有很多方法可以格式化特定的日期,但我找不到我做错了什么代码>是无用的,您不需要分配任何日期对象
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];
NSLog(@"%@", [dateFormatter dateFromString:@"Wed, 25 Sep 2013 12:56:57 GMT"]);
正确输出日期,是否确定字符串
不是nil
?您的问题是您的日期格式化程序与日期字符串不一致:
您应该将日期格式化程序设置为与日期字符串相同的格式
我的例子是:
//将字符串转换为日期
NSString *beginString = @"Sat, 30 Dec 2013 14:45:00 EEST";
//beginString = [beginString stringByReplacingOccurrencesOfString:@"EEST" withString:@""];
//beginString = [beginString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"]];
[dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"Europe/Helsinki"]];
[dateFormat setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss z"];
dateFromString = [dateFormat dateFromString:beginString];
//NSLog(@"Begin string: %@", beginString);
//NSLog(@"not formated: %@", dateFromString);
// Convert Date to string
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];
[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"ru_RU"]];
[dateFormat setDateFormat:@"dd MMMM yyyy"];
myStrDate = [dateFormat stringFromDate:dateFromString];
[currentTitle setPubDate:myStrDate];
您需要24小时格式的HH
。好的,它现在就可以工作了。我没有设置时区和区域设置(顺便说一下,我仍然不知道为什么要这样做)。但我遇到了另一个问题:在将日期从字符串转换为NSDate后,它在时间上移动了3个小时,例如01.01.2013 11:30->01.01.2013 14:30。为什么?这是因为错误的LocaleIdentifier(我在波兰,我将LocaleIdentifier设置为en_GB-我在将其更改为pl_pl时遇到一些问题。时区更改为欧洲/华沙)。