Ani*_*nto 0 cocoa-touch nsdateformatter date-parsing ios
我有一个场景,我得到的日期字符串为“46-05-24”(yy-mm-dd),并且我需要将日期重新格式化为“1946-05-24”。将NSDateFormatter字符串解释为“2046-05-24”。
我正在使用这段代码:
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yy-mm-dd"
let gmt : NSTimeZone = NSTimeZone(abbreviation: "GMT")!
dateFormatter.timeZone = gmt
let dateFromString = dateFormatter.dateFromString(date as String)
dateFormatter.dateFormat = "yyyy-mm-dd"
if dateFromString != nil{
let dateString = dateFormatter.stringFromDate(dateFromString!)
print(dateString)
}
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么吗?
发生这种情况是因为,如果您给出NSDateFormatter两位数的年份,它需要确定该年份所在的世纪。它使用其twoDigitStartDate属性来执行此操作,该属性设置两位数年份可以表示的最早日期。它的默认值为 1949 年 12 月 31 日。46 中的日期低于 50 的日期,因此它被视为 2046。
您可以更改 的值twoDigitStartDate来调整结果。例如,您可以将其设置为 100 年前的日期。这意味着任何两位数年份都将被解释为具有这两位数的最近年份:
let oneCenturyAgo = NSCalendar.currentCalendar().dateByAddingUnit(NSCalendarUnit.Year, value: -100, toDate: NSDate(), options: NSCalendarOptions(rawValue:0))
dateFormatter.twoDigitStartDate = oneCenturyAgo
Run Code Online (Sandbox Code Playgroud)
当然,如果您得到的日期超过 100 年前,您的代码就没有什么好办法知道哪一年是合适的。如果年份是“10”,那么这个人是 1910 年出生还是 2010 年出生?您无从得知,您的代码所能做的就是做出最佳猜测。
| 归档时间: |
|
| 查看次数: |
1541 次 |
| 最近记录: |