这一年发生了什么?
What is happening to the year?
将其放入 playground 会产生我不理解的输出。
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)
您使用的字符串格式有误。您必须更改“Y”,它代表一年中的一周。只需将其更改为“y”:
let dateString = "2014-12-30T00:00:00.000-05:00"
let dateFormatter = DateFormatter()
dateFormatter.calendar = Calendar(identifier: .gregorian)
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
if let date = dateFormatter.date(from: dateString) {
print(date) // "2014-12-30 05:00:00 +0000\n"
dateFormatter.setLocalizedDateFormatFromTemplate("yyyyMMMd")
let fullDate = dateFormatter.string(from: date)
print(fullDate) // "Dec 30, 2014\n"
dateFormatter.setLocalizedDateFormatFromTemplate("yyyyMMM")
let monthDate = dateFormatter.string(from: date)
print(monthDate) // "Dec 2014\n"
}
如果您需要一些参考,请查看此图表:
将其放入 playground 会产生我不理解的输出。
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)
您使用的字符串格式有误。您必须更改“Y”,它代表一年中的一周。只需将其更改为“y”:
let dateString = "2014-12-30T00:00:00.000-05:00"
let dateFormatter = DateFormatter()
dateFormatter.calendar = Calendar(identifier: .gregorian)
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
if let date = dateFormatter.date(from: dateString) {
print(date) // "2014-12-30 05:00:00 +0000\n"
dateFormatter.setLocalizedDateFormatFromTemplate("yyyyMMMd")
let fullDate = dateFormatter.string(from: date)
print(fullDate) // "Dec 30, 2014\n"
dateFormatter.setLocalizedDateFormatFromTemplate("yyyyMMM")
let monthDate = dateFormatter.string(from: date)
print(monthDate) // "Dec 2014\n"
}
如果您需要一些参考,请查看此图表: