我刚刚开始使用Swift 3.0 Calendar方法startOfDay。它在大多数情况下都很有效,但有时它在返回的日期返回了凌晨3点的时间。我从Web服务获取了一个productionDate,我使用以下方法从Unix样式字符串转换
static let dateFormatString = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
static func dateForDateString(dateString: String) -> Date?
{
let formatter = DateFormatter()
formatter.dateFormat = dateFormatString
return formatter.date(from: dateString)
}
日期/时间字符串示例
2017-03-01T09:38:05-05:00
然后我将一个整数值(timeIntervalSince1970)保存到Firebase,在那里我可以看到错误的日期为凌晨3点。这是我用来生成我保存到Firebase的Int值的代码片段
let startofDay = Calendar.current.startOfDay(for: productionDate)
let dateValue = Int(startofDay.timeIntervalSince1970)
就像我说的那样,大部分时间,时间都是正确日期的午夜,但是当应用程序在后台从Web服务获取时,我偶尔会看到凌晨3点进入Firebase数据库。
我知道我在这里没有提供大量信息。我真的希望有人遇到同样的问题并找到解决问题的方法,或者有人可以查看我的代码并告诉我我是如何成为傻瓜的。
谢谢!
答案 0 :(得分:-4)
我终于能够重现这个问题,它与startOfDay返回凌晨3点无关。我正在发布另一个问题,试图找出真正问题的答案。