我遇到将NSString对象转换为NSDate的问题。这是我想要做的: 我正在从互联网上下载RSS消息。我有整个消息由NSXMLParser解析。之后,我有部分喜欢或保存到特定的NSStrings。我想将元素(包括RSS消息的发布日期)转换为NSDate,以便我可以在日期对象上执行某些操作(例如排序,在时钟等上显示)。这是我的样子:
“Wed,25 Sep 2013 12:56:57 GMT”
我试图以这种方式将其转换为NSDate:
*//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对象的正确方法是什么?
顺便说一句,我看过网站了 http://www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns 似乎有很多方法来格式化特定日期,但我找不到我做错了什么。
答案 0 :(得分:0)
NSDate * dateNS = [[NSDate alloc] init];
没用,你不需要分配任何日期对象。
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"]);
正确输出日期,您确定theString
不是nil
吗?
答案 1 :(得分:0)
您的问题是您的日期格式化程序与日期字符串的位置不同: 您应该将日期格式化程序设置为与日期字符串相同的格式
我的例子:
//将字符串转换为日期
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];