NSDateFormatter DateFromString 从 RSS Feed 返回(NULL)

发布于 2024-10-07 10:30:53 字数 526 浏览 4 评论 0原文

我已经分配了一个日期格式化程序,并且我正在尝试格式化一个包含日期的字符串:

formatter = [[NSDateFormatter alloc] init];
[格式化程序setDateStyle:NSDateFormatterShortStyle];
[格式化程序setTimeStyle:NSDateFormatterShortStyle];
NSString *date = [[stories objectAtIndex:storyIndex] objectForKey:@"date"];
NSDate *formattedDate = [格式化程序 dateFromString:date];
NSLog(@"%@", 格式化日期);正如

您所看到的,我对 formattedDate 进行了“NSLogging”,以查看它是否有效。不幸的是它没有起作用,因此返回(NULL)。

请你告诉我我做错了什么。

提前致谢。

I have allocated a date formatter, and I am trying to format a string which contains a date:

formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterShortStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
NSString *date = [[stories objectAtIndex:storyIndex] objectForKey:@"date"];
NSDate *formattedDate = [formatter dateFromString:date];
NSLog(@"%@", formattedDate);

As you can see I am 'NSLogging' the formattedDate to see if it had worked or not. Unfortunately it has not worked and therefore is returning (NULL).

Please could you tell me what I am doing wrong.

Thanks in advanced.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

禾厶谷欠 2024-10-14 10:30:53

字符串“Fri, 10 Dec 2010 23:48:36 +0000”不是“短样式”。

要可靠地解析该数据,请设置区域设置和显式日期格式:

formatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [[[NSLocale alloc] 
    initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
[formatter setLocale:locale];
[formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"];
NSString *date = [[stories objectAtIndex:storyIndex] objectForKey:@"date"];
NSDate *formattedDate = [formatter dateFromString:date];
NSLog(@"%@", formattedDate);

编辑:
然后,要以“2010 年 12 月 10 日星期五”的格式显示 NSDate formattedDate,请在上述代码之后添加以下代码:

NSDateFormatter *displayFormatter = [[NSDateFormatter alloc] init];
[displayFormatter setLocale:locale];
[displayFormatter setDateFormat:@"EEEE dd MMMM yyyy"];
NSString *displayDate = [displayFormatter stringFromDate:formattedDate];
NSLog(@"displayDate = %@", displayDate);
[displayFormatter release];

有关区域设置的说明,请参阅 Apple QA1480
有关日期格式的说明,请参阅 Unicode 日期格式模式

The string "Fri, 10 Dec 2010 23:48:36 +0000" is not a "short style".

To parse that reliably, set the locale and an explicit date format:

formatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [[[NSLocale alloc] 
    initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
[formatter setLocale:locale];
[formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"];
NSString *date = [[stories objectAtIndex:storyIndex] objectForKey:@"date"];
NSDate *formattedDate = [formatter dateFromString:date];
NSLog(@"%@", formattedDate);

Edit:
To then display the NSDate formattedDate in the format "Friday 10 December 2010", add this code after the above:

NSDateFormatter *displayFormatter = [[NSDateFormatter alloc] init];
[displayFormatter setLocale:locale];
[displayFormatter setDateFormat:@"EEEE dd MMMM yyyy"];
NSString *displayDate = [displayFormatter stringFromDate:formattedDate];
NSLog(@"displayDate = %@", displayDate);
[displayFormatter release];

For an explanation of the locale see Apple QA1480.
For an explanation of the date format see Unicode Date Format Patterns.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文