将可选字符串转换为日期

Posted

技术标签:

【中文标题】将可选字符串转换为日期【英文标题】:Convert Optional string to date 【发布时间】:2015-07-27 18:48:29 【问题描述】:

我有这个Optional(2015-07-27 19:29:50 +0000) 作为字符串?我想将其转换为日期(NSDate),但我无法弄清楚我一直在寻找解决方案,但我对编码很陌生,所以如果有人可以提供帮助,我将不胜感激。

这是我当前用来将字符串转换为日期的方法。

注意:dateString 是Optional(2015-07-27 19:29:50 +0000)

dateFormatter = NSDateFormatter()
println(dateFormatter)
dateFormatter.dateFormat = "yyyy-MM-dd"
let s = dateFormatter.dateFromString(dateString)

我总是得到一个零值

【问题讨论】:

问题应该更通用,例如“将字符串转换为数据”,您也不需要在问题中添加标签,因为它们会显示在下方。最后,您还应该在什么情况下以及到目前为止您尝试过的情况下这样做。 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。跨度> SWIFT: How to convert string date to NSDate的可能重复 【参考方案1】:

如果你从 NSDateFormatter 得到 nil,你可能指定了不正确的日期格式。试试这个:

let strTime = "2015-07-27 19:29:50 +0000"
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z"
formatter.dateFromString(strTime) // Returns "Jul 27, 2015, 12:29 PM" PST

【讨论】:

可能会提到它是否适用于 Swift 类 Date 来使用 DateFormatter【参考方案2】:

您将需要使用NSDateFormatter 并在其上调用dateFromString: 以从字符串中获取日期。请参阅Apple's NSDateFormatter documentation,了解如何做你想做的事。

【讨论】:

【参考方案3】:

在 Swift 3.0 中:

let strTime = "2015-07-27 19:29:50 +0000"
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z"
formatter.date(from: strTime) 

【讨论】:

【参考方案4】:

dateString 已经是日期,需要转换为字符串。下面的代码工作正常

dateFormatter = NSDateFormatter() println(dateFormatter) dateFormatter.dateFormat = "yyyy-MM-dd" let s = dateFormatter.string(from: dateString)

【讨论】:

以上是关于将可选字符串转换为日期的主要内容,如果未能解决你的问题,请参考以下文章

flatMap API 合约如何将可选输入转换为非可选结果?

将可排序列表转换为查询并检索并再次显示

sql字符串转换成日期

如何将可绘制背景设置为仅将数字字符串转换为 android 中的另一个字符串?

如何在 Swift 中使用 Codable 转换带有可选小数秒的日期字符串?

将可选数据写入 Firebase