給定一個日期,我想在4:00得到一個日期。這對於失敗0:00 - 3:39:前一天的日期@ 4am
let date3am = Calendar.current.date(from: DateComponents(year: 2017, month: 7, day: 1, hour: 3, minute: 0, second: 0))!
let date = Calendar.current.date(bySettingHour: 4, minute: 0, second: 0, of:
date3am, direction: .backward)!
date // "Jul 1, 2017, 4:00 AM"
date < date3am // false
爲什麼date(bySettingHour)
不倒退?
目前尚不清楚您要實現的目標。我認爲你有一個任意的日期(例如'date3am'),並且你試圖在同一天的04:00獲得日期,那是對的嗎? – paulvs
'Calendar.current.date(bySettingHour:4,minute:0,second:0,of: date3am,direction:.backward)''*不*從* date3am開始加減4小時 - 即使它看起來好像*就像它應該做的那樣。它返回一個代表相同*日曆*日的新日期對象,並帶有新的**時間** - 因此,「7月1日凌晨4點」的結果*是正確的。 – DonMag
@DonMag:我不想減去4小時,我想把時間設定爲4點。但我不想去下一個凌晨4點,而是回到前一個(如果是從0:00-3:59運行,那將是1天前) –