2017-03-01 117 views
0

我剛開始使用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數據庫。

我知道我沒有在這裏提供大量的信息。我真的希望有人遇到同樣的問題,並想出辦法解決問題,或者有人可以看看我的代碼,告訴我我是如何成爲笨蛋。

謝謝!

+0

您可能將UTC與當前時區混合在一起。 –

+0

@Robert我在Web服務有效載荷中獲得了像'America/New_York'這樣的時區字符串值,所以我將使用它來初始化DateFormatter。謝謝! – Moebius

+0

你爲什麼想要獲得startOfDay?如果您需要日曆計算的日期,最好使用中午(12點)。每天有12點但不是每天都有12點。 –

回答

-3

我終於能夠重現這個問題,它與startOfDay返回上午3點時間無關。我發佈了另一個問題,試圖找出真正問題的答案。

+0

薄如何答案-.- –