【发布时间】:2014-10-30 16:44:18
【问题描述】:
我需要使用 swift 以这些格式检索日期和时间。
2014-09-19
16:43:00.0
NSDate() 将日期和时间一起给出,时间格式错误,有谁知道如何分别获取这些,并且有上面显示的格式的时间。
【问题讨论】:
-
如果您在控制台中看到这是预期的行为。如果您想拥有自己的显示格式,则需要通过 nsdateformatter 传递它。
我需要使用 swift 以这些格式检索日期和时间。
2014-09-19
16:43:00.0
NSDate() 将日期和时间一起给出,时间格式错误,有谁知道如何分别获取这些,并且有上面显示的格式的时间。
【问题讨论】:
要格式化日期,请使用NSDateFormatter。
【讨论】:
你用这两个字符串做什么?如果您将 用于内部目的(时间戳事务、向数据库添加排序字段、向 Web 服务提交 ISO 8601 / RFC 3339 日期),您通常需要确保您还:
使用 GMT/UTC;和
指定语言环境
因此,这可能会产生:
let date = NSDate()
let timeZone = NSTimeZone(forSecondsFromGMT: 0)
let locale = NSLocale(localeIdentifier: "en_US_POSIX")
let dateFormatter = NSDateFormatter()
dateFormatter.timeZone = timeZone
dateFormatter.locale = locale
dateFormatter.dateFormat = "yyyy-MM-dd"
let timeFormatter = NSDateFormatter()
timeFormatter.timeZone = timeZone
timeFormatter.locale = locale
timeFormatter.dateFormat = "HH:mm:ss.S"
println(dateFormatter.stringFromDate(date))
println(timeFormatter.stringFromDate(date))
Technical Q&A QA1480 文档在 Internet 上使用的 ISO 8601 / RFC 3339 日期的上下文中讨论了这一点,但无论您何时将这些日期用于内部目的,基本概念都同样适用。
【讨论】:
这应该可以解决问题:
let date = NSDate()
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let timeFormatter = NSDateFormatter()
timeFormatter.dateFormat = "HH:mm:ss.S"
println(dateFormatter.stringFromDate(date))
println(timeFormatter.stringFromDate(date))
【讨论】:
检查以下代码-
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let d = NSDate()
let s = dateFormatter.stringFromDate(d)
println(s)
【讨论】: