我剛開始使用Swift 3.0日曆方法startOfDay。它在大多數情況下都很好用,但有時在返回的日期已經返回了凌晨3點的時間。我從web服務,其中我從一個Unix風格串使用下述方法轉化得到一個productionDateSwift 3.0 - 日曆startOfDay方法返回3am
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點。下面是一個代碼片段,我使用生成我保存到火力
let startofDay = Calendar.current.startOfDay(for: productionDate)
let dateValue = Int(startofDay.timeIntervalSince1970)
就像我說的int值,大部分的時間,時間結束是正確的日期的午夜,但是當應用程序是在後臺從Web服務中獲取,我偶爾會看到凌晨3點進入Firebase數據庫。
我知道我沒有在這裏提供大量的信息。我真的希望有人遇到同樣的問題,並想出辦法解決問題,或者有人可以看看我的代碼,告訴我我是如何成爲笨蛋。
謝謝!
您可能將UTC與當前時區混合在一起。 –
@Robert我在Web服務有效載荷中獲得了像'America/New_York'這樣的時區字符串值,所以我將使用它來初始化DateFormatter。謝謝! – Moebius
你爲什麼想要獲得startOfDay?如果您需要日曆計算的日期,最好使用中午(12點)。每天有12點但不是每天都有12點。 –