【发布时间】:2017-07-14 16:30:09
【问题描述】:
给定一个日期,我想在 4:00 获得一个日期。 0:00 - 3:39 失败:
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的日期,对吗? -
Calendar.current.date(bySettingHour: 4, minute: 0, second: 0, of: date3am, direction: .backward)不会从date3am中增加或减少 4 小时 - 即使它似乎应该这样做。它返回一个新的 Date 对象,该对象表示同一 calendar 日,带有新的 Time - 因此,“7 月 1 日凌晨 4 点”的结果 是 i> 正确。 -
@DonMag:我不想减去 4 小时,我想将时间设置为 4:00。但我不想去下一个凌晨 4 点,而是回到前一个(如果从 0:00-3:59 运行,那将是 1 天前)