如何格式化Swift中的日期?

时间:2015-08-29 02:36:29

标签: ios swift nsdateformatter

我正在尝试格式化此日期:if let safeAgeInt = ageInt { // Do Something with safeAgeInt }

进入这一个:2014-03-18T03:31:14.000Z

我想将它拆分并存储在一个数组中。

2 个答案:

答案 0 :(得分:2)

您需要创建一个NSDate对象,然后使用NSDateFormatter为日期部分创建一个字符串,为时间部分创建另一个字符串。在这里,我省去了麻烦(确保dateFormat是正确的):

let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
let date = formatter.dateFromString("2014-03-18T03:31:14.000Z")

formatter.locale = NSLocale.currentLocale()
formatter.dateStyle = .LongStyle
formatter.timeStyle = .NoStyle
let dateString = formatter.stringFromDate(date!)

formatter.dateStyle = .NoStyle
formatter.timeStyle = .LongStyle
let timeString = formatter.stringFromDate(date!)

答案 1 :(得分:1)

以下将做。请注意,我使用stringFromDate两次使用不同的格式字符串,而不是根据需要拆分格式化日期。使用stringFromDate两次更加独立于格式。

同时创建NSDateFormatter有点贵,最好重复使用它。

let z = "2014-03-18T03:31:14.000Z"
let fmt = NSDateFormatter()
fmt.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let date = fmt.dateFromString(z)!

fmt.timeZone = NSTimeZone(abbreviation: "Australia/Brisbane")
fmt.dateFormat = "yyyy-MM-dd"
let dateString = fmt.stringFromDate(date)

fmt.dateFormat = "h:mm a"
let timeString = fmt.stringFromDate(date)

print("date: \(dateString), time: \(timeString)")