这一年发生了什么?

时间:2015-01-10 02:37:37

标签: date swift

将它放入游乐场会产生我不理解的输出。 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 个答案:

答案 0 :(得分: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