Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在所有时区/地区向NSCalendar添加天数_Ios_Swift2_Nsdate_Nscalendar_Ios9.2 - Fatal编程技术网

Ios 如何在所有时区/地区向NSCalendar添加天数

Ios 如何在所有时区/地区向NSCalendar添加天数,ios,swift2,nsdate,nscalendar,ios9.2,Ios,Swift2,Nsdate,Nscalendar,Ios9.2,在Swift 2.0中,我使用以下代码块从当前日期开始添加3天,以检索特定日期的天气数据 var inThreeDaysValue: String { let newDate = NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: 3, toDate: currentDate, options: NSCalendarOptions.init(rawValue: 0)) dateFormatter.

在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)

相反,如果我将emulator的区域设置为“英国”或“意大利”,那么代码的性能将非常好,并且新的日期就是准确的日期


我想知道为什么会发生这种情况,以及是否有办法使这段代码在iOS 9.2提供的所有时区和地区都能工作,请将YYYY更改为小写,如下所示:

dateFormatter.dateFormat = "yyyy-MM-dd"
此问题的描述如下:

需要注意的一点是,“yyyy”和“yyyy”之间存在差异。在大多数情况下,您可能希望使用小写字母“yyy”。大写字母是一年中的“周”样式

您可以在这里阅读所有关于它的内容:


祝您好运:)

感谢您宝贵的答案和资源,现在我有了更好地了解NSDateFormatter工作原理的方法!