迅捷3-无法将字符串转换为日期 [英] swift 3 - can not convert string to date
问题描述
无论我做什么,我都无法将RSSs pubDate(当然是字符串)转换为 Date
.
No matter what I do, I can not convert an RSSs pubDate (which is a string of course) into a Date
.
以下是日期字符串: Sun,2017年4月2日19:31:18 GMT
这是我的代码:
private var dateBuffer: Date {
formatter.dateFormat = "EEE, dd MMM yyyy hh:mm:ss zzz"
let date = formatter.date(from: buffers["pubDate"]!) //<-date comes back nil
return date! //<-program crashes
}
date
始终返回 nil
.可能是什么问题?
date
always returns nil
. What maybe the problem??
推荐答案
如果您非常确定 buffers ["pubDate"]!
等于"Sun,2017年4月2日19:31:18 GMT"(或任何具有相同格式的日期),则应为:
If your are pretty sure that buffers["pubDate"]!
is equal to "Sun, 02 Apr 2017 19:31:18 GMT" (or any date with the same format), then it should be:
var dateBuffer: Date {
let formatter = DateFormatter()
formatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss zzz"
let date = formatter.date(from: buffers["pubDate"]!)
return date!
}
请注意,区别是 HH:mm:ss
而不是 hh:mm:ss
.要将小时读为24时制惯例,应使用 HH
.
Note that the difference is HH:mm:ss
instead of hh:mm:ss
. For reading the hours as 24-clock convention, you should use HH
.
为了更加安全-避免任何意外崩溃-我建议做一些可选绑定,如下所示:
Also, to be more safe -from any unexpected crash-, I'd suggest to do some optional binding, as follows:
var dateBuffer: Date? {
let formatter = DateFormatter()
let str:String? = "Sun, 02 Apr 2017 19:31:18 GMT"
formatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss zzz"
if let pubDate = buffers["pubDate"], let date = formatter.date(from: pubDate) {
return date
}
return nil
}
if let myDate = dateBuffer {
print(myDate)
}
这篇关于迅捷3-无法将字符串转换为日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!