Swift - NSDate - 删除部分日期

2024-04-25

我有一个以下格式的日期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 数字?


You ask:

如何删除多余的+0000数字?

我不确定你的意思,因为结果dateStr does+0000已删除。

但让我们退后一步,考虑解析以下格式的日期字符串的正确方法:2015-02-22T20:58:16+0000。你应该使用locale of en_US_POSIX如中所述Apple 技术问答 1480 https://developer.apple.com/library/mac/qa/qa1480/_index.html:

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!)

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift - NSDate - 删除部分日期 的相关文章

随机推荐