我的情况如下:我从API调用中获得一个票据信息,并且在我的领域浏览器中可以看到我启动票证的日期以及过期时间被正确保存在UTC中的数据库中。境界NSDate没有被正确读取
在数据库中,使用Realm Browser,我可以看到startTime是2017年4月25日下午1:45:30,endTime是2017年4月26日上午6:45:30。 (我当地时间是在激活我的机票时 - 上午9:45:30 - 所以这是正确设置在服务器端)
但是,当我在代码中访问该日期后从数据库中检索它给我与偏移日期! (不,它不是本地时区的日期 - 它应该是以UTC保存的日期)。
下面是一些代码,我用它来从数据库中获取的信息,并显示它:
func getTickets() -> [Ticket] {
let tickets = userInfo?.tickets.filter("state == %@", "activated").map({ (dbTicket) -> Ticket in
var startTime: Date? = nil
var endTime: Date? = nil
if let start = dbTicket.startTime, let end = dbTicket.endTime {
print("START ", dbTicket.startTime,
"\nNOW ", NSDate(),
"\nEND ", dbTicket.endTime)
startTime = start as Date
endTime = end as Date
}
print("START ", dbTicket.startTime,
"\nNOW ", Date(),
"\nEND ", dbTicket.endTime)
return Ticket(id: dbTicket.id, startTime: startTime, endTime: endTime)
}) ?? []
return tickets
}
这里就是被打印到控制台上:
START Optional(2017-04-25 17:45:30 +0000)
NOW 2017-04-25 13:46:15 +0000
END Optional(2017-04-26 10:45:30 +0000)
START Optional(2017-04-25 17:45:30 +0000)
NOW 2017-04-25 13:46:15 +0000
END Optional(2017-04-26 10:45:30 +0000)
这是不正确! START应该与NOW几乎相同。那么为什么从Realm数据库中错误地读取START和END日期?尤其是我可以在Realm浏览器中看到它们,并且它们正确保存。