Swift - NSDate - 删除部分日期

时间:2016-03-11 22:05:34

标签: swift nsdate

我的日期格式为2015-02-22T20:58:16+0000

为了将其转换为NSDate,我找到了以下解决方案

var df = NSDateFormatter()
df.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZ"
var date = df.dateFromString(myDate)
df.dateFormat = "eee MMM dd yyyy"
var dateStr = df.stringFromDate(date!)

但我想从日期删除+0000。我试图删除ZZZZm,但应用程序崩溃。

如何删除额外的+0000位?

2 个答案:

答案 0 :(得分:5)

你问:

  

如何删除额外的+0000位?

我不确定您的意思,因为生成的dateStr 确实删除了+0000

但让我们退后一步,考虑以2015-02-22T20:58:16+0000格式解析日期字符串的正确方法。您应使用Apple Technical Q&A 1480中所述的locale en_US_POSIX

let myDate = "2015-02-22T20:58:16+0000"

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
let date = dateFormatter.dateFromString(myDate)

如果您希望为最终用户设置格式,请将locale重置为currentLocale

dateFormatter.locale = NSLocale.currentLocale()
dateFormatter.dateFormat = "eee MMM dd yyyy"
let dateStr = dateFormatter.stringFromDate(date!)

然后dateStr成为:

  

2015年2月22日星期日

或者,或许更好,为了更好的本地化行为,请使用dateFormatFromTemplate

let locale = NSLocale.currentLocale()
dateFormatter.locale = locale
dateFormatter.dateFormat = NSDateFormatter.dateFormatFromTemplate("eeeMMMdyyyy", options: 0, locale: locale)
let dateStr = dateFormatter.stringFromDate(date!)

在美国,它将如上所示,但在英格兰,它将显示为:

  

2015年2月22日,星期日

如果适用于您,请使用其中一个标准dateStyle值。但我通常建议不要使用硬编码dateFormat,而应使用符合最终用户本地化设置的格式。

答案 1 :(得分:4)

我不建议您在解析结果时删除时区。但是,如果你想要删除字符串,你可以这样做:

let date = "2015-02-22T20:58:16+0000"
let display = date.substringToIndex(date.characters.indexOf("+")!)

这将为您提供2015-02-22T20:58:16

的结果