【问题标题】:How to make adding days to NSCalendar work in all Timezones/Regions如何在所有时区/区域中为 NSCalendar 添加天数
【发布时间】:2015-12-24 11:02:52
【问题描述】:

我在 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 提供的所有时区和区域中工作

【问题讨论】:

    标签: ios swift2 nsdate nscalendar ios9.2


    【解决方案1】:

    将YYYY改为小写如下:

    dateFormatter.dateFormat = "yyyy-MM-dd"
    

    这个问题的描述是:

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

    您可以在此处阅读所有相关信息: http://www.codingexplorer.com/swiftly-getting-human-readable-date-nsdateformatter/

    祝你好运:)

    【讨论】:

    • 感谢您提供宝贵的答案和资源,现在我对 NSDateFormatter 的工作原理有了更好的了解!
    猜你喜欢
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多