2015-01-10 69 views
0

把它放到操場上會產生我不明白的結果。 Dec 30, 2014的第一個輸出很有意義,但第二個Dec 2015沒有。這一年發生了什麼?

爲什麼我的第二個輸出顯示2015年?我的語言環境是美國的格里曆。

import UIKit 

let dateString = "2014-12-30T00:00:00.000-05:00" 
let _dateFormatter = NSDateFormatter() 
_dateFormatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian) 
_dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'.'SSSZZZZZ" 

let date = _dateFormatter.dateFromString(dateString)! 

let format = NSDateFormatter.dateFormatFromTemplate("MMM d YYYY", options: 0, locale: NSLocale.currentLocale()) 
let formatter = NSDateFormatter() 
formatter.dateFormat = format 
formatter.dateStyle = NSDateFormatterStyle.MediumStyle 


let monthFormat = NSDateFormatter.dateFormatFromTemplate("MMM YYYY", options: 0, locale: NSLocale.currentLocale()) 
let monthFormatter = NSDateFormatter() 
monthFormatter.dateFormat = monthFormat 

let fullDate = formatter.stringFromDate(date) 
let monthDate = monthFormatter.stringFromDate(date) 

回答

1

您正在使用錯誤的字符串格式。您必須更改「年」周的「Y」。只需將其更改爲「Y」:

import UIKit 

let dateString = "2014-12-30T00:00:00.000-05:00" 
let _dateFormatter = NSDateFormatter() 
_dateFormatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian) 
_dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'.'SSSZZZZZ" 

let date = _dateFormatter.dateFromString(dateString)! 

let format = NSDateFormatter.dateFormatFromTemplate("MMM d yyyy", options: 0, locale: NSLocale.currentLocale()) 
let formatter = NSDateFormatter() 
formatter.dateFormat = format 
formatter.dateStyle = NSDateFormatterStyle.MediumStyle 


let monthFormat = NSDateFormatter.dateFormatFromTemplate("MMM yyyy", options: 0, locale: NSLocale.currentLocale()) 
let monthFormatter = NSDateFormatter() 
monthFormatter.dateFormat = monthFormat 

let fullDate = formatter.stringFromDate(date) 
let monthDate = monthFormatter.stringFromDate(date) 

如果你需要有一定的參考只是看看這張圖:

enter image description here

+0

但爲什麼沒有第一個例子,然後也是在2015年打印原始代碼? – Thilo

+0

http://stackoverflow.com/questions/27651727/date-from-week-of-year-returning-date-not-in-week/27652083#27652083 –

+0

這工作,謝謝。 YYYY是什麼意思? –