NSDateFormatter 减少日期的日期
NSDateFormatter decreases the day of date
我需要将 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
只是 Double
数字的包装器。
我需要将 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
只是 Double
数字的包装器。