DateFormatter 返回零

Posted

技术标签:

【中文标题】DateFormatter 返回零【英文标题】:DateFormatter returns nil 【发布时间】:2017-06-02 12:07:57 【问题描述】:

为什么DateFormatter 返回零? 我认为字符串格式匹配?

let dateString = ("01/05/2017")!
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone.current
dateFormatter.dateFormat = "dd/MMM/yyyy"
let dateObj = dateFormatter.date(from: dateString)

执行上述代码后,dateObj为nil。

【问题讨论】:

那只是表示字符串与日期格式不匹配。 – Apple 提供了一个Data Formatting Guide 链接到Date Format Patterns 文档。 let dateString = ("01/05/2017")! 看起来很丑。你想在那里解开什么?常规字符串中没有可选值。 将您的字符串从 let dateString = ("01/05/2017")! 更改为 let dateString = "01/05/2017" 嗯,这很尴尬。我只是在我的代码中有一个错字。感谢所有帮助:) 【参考方案1】:

对于month,您需要使用MM,因为MMM 使用格式为JanFebMar 等格式的月份。所以你的dateFormat 应该是dd/MM/yyyy

let dateString = "01/05/2017"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy"
let dateObj = dateFormatter.date(from: dateString)

注意:无需将timeZone设置为TimeZone.current

【讨论】:

【参考方案2】:

替换为您的日期格式:

dateFormatter.dateFormat = "dd/MM/yyyy"

【讨论】:

【参考方案3】:

在这种情况下,日期格式化程序应该是 dateFormatter.dateFormat = "dd/MM/yyyy"。

【讨论】:

【参考方案4】:

您可以从给定的链接查看各种日期格式

NSDateFormatter

对于给定的示例,您可以使用let formaterStrig = "dd/MM/yyyy"

【讨论】:

以上是关于DateFormatter 返回零的主要内容,如果未能解决你的问题,请参考以下文章

仍然对 Swift DateFormatter 和 .dateFormat 效率感到困惑

Flash 中的条件日期格式

DateFormatter 返回错误的时间[重复]

Swift:DateFormatter 返回 nil

将 Eureka 表单数据上传到 firebase

DateFormatter 返回有效字符串