我有一個應用程序提供每30秒過期的數據(具體來說,h/m/s 11:30:00,11:30:30,11:31:00等) 。回合時間到最近的三十秒
我可以得到當前時間,但我不確定如何計算從現在到最近的三十秒之間的時間。
我發現的任何東西都在Objective-C中,我一直無法將其轉換。
這裏是我的嘗試:
func nearestThirtySeconds() -> Date? {
var components = NSCalendar.current.dateComponents([.second], from: self)
let second = components.second ?? 30
components.second = second >= 30 ? 60 - second : -second
return Calendar.current.date(byAdding: components, to: self)
}
但這返回最接近的分鐘數(我想,它總是返回一個明確分鐘)
任何想法?
您應該使用日曆計算。這可以打破一些奇怪的時區。 – Sulthan
雖然這通常是真實的,如果你希望是準確的,在這裏你是明確的四捨五入時間和丟棄的準確性,所以我認爲這不重要,如果你是閏秒或其他什麼,但如果你關心,那麼您可以使用與DateComponents.second相同的數學方法。一般的公式是添加你想要的數字,然後減去除以該數字後的餘數。 –
下面是一個「怪異」時區偏移量的示例:https://stackoverflow.com/a/44661976/1187415。所以這取決於你是否想要在本地時間或UTC時間四捨五入。 –