Swift-NSDate-删除部分日期

Swift-NSDate-删除部分日期,swift,nsdate,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!) 但我想从日期中删除

我有以下格式的日期
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。我试图删除ZZZM,但应用程序崩溃


如何删除额外的+0000位数?

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

let date = "2015-02-22T20:58:16+0000"
let display = date.substringToIndex(date.characters.indexOf("+")!)
这将给出您询问的结果:

如何删除额外的+0000位数

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

但是,让我们后退一步,考虑以<代码> 2015-02-22T20:58:16+ 0000 的格式解析日期字符串的正确方法。您应该使用

en_US_POSIX
locale
,如中所述:

然后,当您要为最终用户格式化时,请将
区域设置
重置回
当前区域设置

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
,而是使用尊重最终用户本地化设置的格式

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