如何在所有 Timezones/Regions 中向 NSCalendar 添加天数
How to make adding days to NSCalendar work in all Timezones/Regions
我在 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"
}
事实是,如果我在我的模拟器中 运行 这段代码(使用 "United States" 作为区域),新日期将被设置为 3 天和 1 年提前(如果今天是 2015-12-24,则新日期将为 2016-12-27)。
相反,如果我将模拟器的区域设置为 "United Kingdom" 或 "Italy",代码将完美执行并且新日期是准确的日期。
我想知道为什么会发生这种情况,以及是否有办法使此代码在 iOS 9.2
提供的所有时区和区域中工作
将 YYYY 改为小写如下:
dateFormatter.dateFormat = "yyyy-MM-dd"
这个问题的描述是:
One major thing to note, there is a difference between “yyyy” and “YYYY”. In most cases, you probably want to use the lowercase one, “yyyy”. The uppercase one is the “Week of Year” style of year.
您可以在这里阅读所有相关信息:
http://www.codingexplorer.com/swiftly-getting-human-readable-date-nsdateformatter/
祝你好运:)
我在 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"
}
事实是,如果我在我的模拟器中 运行 这段代码(使用 "United States" 作为区域),新日期将被设置为 3 天和 1 年提前(如果今天是 2015-12-24,则新日期将为 2016-12-27)。
相反,如果我将模拟器的区域设置为 "United Kingdom" 或 "Italy",代码将完美执行并且新日期是准确的日期。
我想知道为什么会发生这种情况,以及是否有办法使此代码在 iOS 9.2
提供的所有时区和区域中工作将 YYYY 改为小写如下:
dateFormatter.dateFormat = "yyyy-MM-dd"
这个问题的描述是:
One major thing to note, there is a difference between “yyyy” and “YYYY”. In most cases, you probably want to use the lowercase one, “yyyy”. The uppercase one is the “Week of Year” style of year.
您可以在这里阅读所有相关信息: http://www.codingexplorer.com/swiftly-getting-human-readable-date-nsdateformatter/
祝你好运:)