Ios NSDateFormatter减少日期

Ios NSDateFormatter减少日期,ios,core-data,nsdateformatter,Ios,Core Data,Nsdateformatter,我需要将Date变量存储在CoreData的iOS 我只需要存储日期而不存储时间,因此我制作了一个格式化程序,从NSDate变量中丢弃时间分区。 但我有一个奇怪的结果: 这是我的代码: let dateStr = "2016-02-14 11:27:01" let df2 = NSDateFormatter() df2.timeZone = NSTimeZone.defaultTimeZone() df2.dateFormat = "yyyy-MM-dd HH:

我需要将
Date
变量存储在
CoreData
iOS

我只需要存储日期而不存储时间,因此我制作了一个格式化程序,从
NSDate
变量中丢弃时间分区。 但我有一个奇怪的结果: 这是我的代码:

    let dateStr = "2016-02-14 11:27:01"

    let df2 = NSDateFormatter()
    df2.timeZone = NSTimeZone.defaultTimeZone()
    df2.dateFormat = "yyyy-MM-dd HH:mm:ss"
    print(dateStr)

    if let date = df2.dateFromString(dateStr) {
        df2.dateFormat = "yyyy-MM-dd"
        print("-> \(df2.dateFromString(df2.stringFromDate(date)))")
    }
这是输出:

2016-02-14 11:27:01
-> Optional(2016-02-13 20:00:00 +0000)
为什么格式化程序每天减少一天?
我尝试了许多具有相同问题的日期

您的时区显然是UTC+4

要获取UTC,请相应地设置时区

df2.timeZone = NSTimeZone(forSecondsFromGMT: 0)

但是,尽管您在4小时前看到一个日期,
NSDate
对象根据您所在的时区正确处理。
print
命令始终显示UTC,忽略时区信息,因为
NSDate
只是一个
双倍
数字的包装。

您的时区显然是UTC+4

要获取UTC,请相应地设置时区

df2.timeZone = NSTimeZone(forSecondsFromGMT: 0)

但是,尽管您在4小时前看到一个日期,
NSDate
对象根据您所在的时区正确处理。
print
命令始终显示UTC,忽略时区信息,因为
NSDate
只是一个
Double
数字的包装。

您的时区UTC+4吗?是的,但为什么@瓦迪安,你的时区是UTC+4吗?是的,但为什么@瓦迪安人