我在 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 年(如果今天是2015-12-24,则新日期将是2016 -12-27 )。
相反,如果我将模拟器的区域设置为“英国”或“意大利”,则代码会完美运行,并且新日期就是准确的日期。
我想知道为什么会发生这种情况,以及是否有办法使此代码在 iOS 9.2 提供的所有时区和区域中工作