我在Swift 2.0中有以下代码块,用于从当前日期添加3天以检索特定日期的天气数据。
var inThreeDaysValue: String {
let newDate = NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: 3,
toDate: currentDate, options: NSCalendarOptions.init(rawValue: 0))
dateFormatter.dateFormat = "YYYY-MM-dd"
print("*** IN THREE DAYS \(dateFormatter.stringFromDate(newDate!))")
return "\(dateFormatter.stringFromDate(newDate!)) 12:00:00"
}
事实是,如果我在我的模拟器中运行此代码(使用“美国”作为区域),新日期将设置为提前3天和1年(如果今天是< em> 2015-12-24 新日期将 2016-12-27 )。
相反,如果我将我的模拟器的区域设置为“英国”或“意大利”,则代码执行完美,新日期就是确切的日期。
我想知道为什么会发生这种情况,如果有办法让这个代码在iOS 9.2提供的所有时区和区域中运行
答案 0 :(得分:3)
将YYYY更改为小写,如下所示:
dateFormatter.dateFormat = "yyyy-MM-dd"
此问题的描述如下:
需要注意的一点是,“yyyy”和“YYYY”之间存在差异。在大多数情况下,您可能希望使用小写的“yyyy”。大写的一年是“年度周”风格。
你可以在这里阅读所有相关内容: http://www.codingexplorer.com/swiftly-getting-human-readable-date-nsdateformatter/
祝你好运:)