По какой-то причине, когда я использую Date()
(чтобы получить текущую дату), а затем вычислить разницу во времени, это всегда 1 минута. Однако, когда я жестко кодирую дату и вычисляю разницу во времени, это правильно.Почему разница между двумя датами на 1 минуту, если используется Date()?
Почему это и как я могу точно рассчитать разницу между датой прямо сейчас (то есть currentDate
) и датой в будущем (т. Е. date2
)?
Чтобы показать вам, что я имею в виду вот пример площадка:
Код
let calendar = Calendar.current
var components = DateComponents()
components.day = 12
components.month = 2
components.year = 2017
components.hour = 19
components.minute = 50
let date1 = calendar.date(from: components)
components.hour = 20
components.minute = 30
let date2 = calendar.date(from: components)
let currentDate = Date()
let conversionInfoAccurate = Calendar.current.dateComponents([.hour, .minute, .day], from: date1!, to: date2!)
let daysAccurate = conversionInfoAccurate.day
let hoursAccurate = conversionInfoAccurate.hour
let minutesAccurate = conversionInfoAccurate.minute
let conversionInfo1Off = Calendar.current.dateComponents([.hour, .minute, .day], from: currentDate, to: date2!)
let days1Off = conversionInfo1Off.day
let hours1Off = conversionInfo1Off.hour
let minutes1Off = conversionInfo1Off.minute
потому что второй отличается? –
Имеет ли 'currentDate' компонент секунд? –
Все даты имеют второй компонент. Или, скорее, дата не имеет компонентов; декомпозиция - это функция календаря. –