Swift - NSDate - 删除部分日期
Swift - NSDate - remove part of 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。我尝试删除 ZZZZm,但应用程序崩溃了。
如何删除多余的 +0000 位数字?
我不建议您在解析结果时删除时区。但是如果你只想删除字符串,你可以这样做:
let date = "2015-02-22T20:58:16+0000"
let display = date.substringToIndex(date.characters.indexOf("+")!)
这将为您提供 2015-02-22T20:58:16
的结果
你问:
How can I remove extra +0000 digits?
我不确定你的意思,因为结果 dateStr
确实 删除了 +0000
。
但是让我们退后一步,考虑一下解析 2015-02-22T20:58:16+0000
格式的日期字符串的正确方法。您应该使用 en_US_POSIX
的 locale
,如 Apple Technical Q&A 1480:
中所述
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
变成:
Sun Feb 22 2015
或者,也许更好,为了更好的本地化行为,使用 dateFormatFromTemplate
:
let locale = NSLocale.currentLocale()
dateFormatter.locale = locale
dateFormatter.dateFormat = NSDateFormatter.dateFormatFromTemplate("eeeMMMdyyyy", options: 0, locale: locale)
let dateStr = dateFormatter.stringFromDate(date!)
在美国,它将如上所示,但在英国将显示为:
Sun, 22 Feb 2015
或使用标准 dateStyle
值之一(如果适合您的话)。但我通常建议不要使用硬编码 dateFormat
,而是使用尊重最终用户本地化设置的格式。
我的日期格式如下 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 位数字?
我不建议您在解析结果时删除时区。但是如果你只想删除字符串,你可以这样做:
let date = "2015-02-22T20:58:16+0000"
let display = date.substringToIndex(date.characters.indexOf("+")!)
这将为您提供 2015-02-22T20:58:16
你问:
How can I remove extra +0000 digits?
我不确定你的意思,因为结果 dateStr
确实 删除了 +0000
。
但是让我们退后一步,考虑一下解析 2015-02-22T20:58:16+0000
格式的日期字符串的正确方法。您应该使用 en_US_POSIX
的 locale
,如 Apple Technical Q&A 1480:
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
变成:
Sun Feb 22 2015
或者,也许更好,为了更好的本地化行为,使用 dateFormatFromTemplate
:
let locale = NSLocale.currentLocale()
dateFormatter.locale = locale
dateFormatter.dateFormat = NSDateFormatter.dateFormatFromTemplate("eeeMMMdyyyy", options: 0, locale: locale)
let dateStr = dateFormatter.stringFromDate(date!)
在美国,它将如上所示,但在英国将显示为:
Sun, 22 Feb 2015
或使用标准 dateStyle
值之一(如果适合您的话)。但我通常建议不要使用硬编码 dateFormat
,而是使用尊重最终用户本地化设置的格式。