我的日期格式为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位?
答案 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