2016-03-11 102 views
2

的一部分,我有一個日期格式如下2015-02-22T20:58:16+0000斯威夫特 - 的NSDate - 刪除日期

爲了將其轉換爲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位數字?

回答

3

結果你問:

我怎樣才能刪除多餘的+0000位數字?

我不知道你的意思,因爲由此產生的dateStr確實+0000刪除。

但讓我們退後一步,考慮解析日期字符串的正確方法,其格式爲2015-02-22T20:58:16+0000。您應該使用的en_US_POSIX一個localeApple 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) 

當你再要格式化,對於最終用戶,重置localecurrentLocale

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,而應使用尊重最終用戶本地化設置的格式。

3

我不建議在解析結果時刪除時區。但是,如果你想要做的是去除串,你可以做這樣的:

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

這會給你的2015-02-22T20:58:16