Swift 2:将 RSS pubDate 解析为 NSDate 对象

Posted

技术标签:

【中文标题】Swift 2:将 RSS pubDate 解析为 NSDate 对象【英文标题】:Swift 2: Parse RSS pubDate to NSDate object 【发布时间】:2016-08-20 07:26:47 【问题描述】:

我正在尝试在 Swift 2 中将字符串(日期)从 RSS Feed(“pubDate”)转换为 NSDate 对象

let dateString:String = "Tue, 16 Aug 2016 15:27:33 +0000"

let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.ShortStyle
dateFormatter.dateFormat = "yyyy-MM-dd"

let date = dateFormatter.dateFromString(dateString)
print(date)

问题是,在这种情况下,日期对象始终为零。问题在于输入字符串的格式。如果我将 dateString 更改为“2016-08-16”,则 NSDate 对象构建正确

所以我不知道如何让这个 NSDate 工作。之前对 dateString 的字符串操作?还是 dateFormatter 上的一些选项?

提前感谢您的帮助!

【问题讨论】:

您的日期格式与2016-08-16 匹配。您需要正确的日期格式 Converting NSString to NSDate (and back again)的可能重复 按照以下步骤将 dateFormat 调整为 dateString:i.stack.imgur.com/lkYVY.png 【参考方案1】:

虽然关于如何从字符串转换为日期的问题主要是关于指定正确的格式字符串,但您应该阅读 Apple 关于 NSDateFormatter and Internet Dates 的说法。简短的版本是您应该始终将本地指定为en_US_POSIX

let dateString = "Tue, 16 Aug 2016 15:27:33 +0000"

let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
dateFormatter.dateFormat = "E, d MMM yyyy HH:mm:ss Z"

let date = dateFormatter.dateFromString(dateString)
print(date)

【讨论】:

以上是关于Swift 2:将 RSS pubDate 解析为 NSDate 对象的主要内容,如果未能解决你的问题,请参考以下文章

从pubDate RSS标记中提取日期

SWIFT/iOS:将 XML 数据(RSS 提要)解析为明文,将图像和视频添加到 textview

如何在 iOS 上使用 Swift 将 1 个以上的 RSS Feed 解析并合并为一个 Feed

RSS格式化日期(pubDate)的日期函数参数

MailChimp RSS广告系列:强制包含旧帖子

xslt 通过子节点和位置选择 rss 项目