Тип Date и интервалы времени
Представляйте моменты времени и их длительность.
«Тип Date и интервалы времени» — бесплатный урок Swift Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.
Тип Date
Date из Foundation представляет одну точку во времени, не зависящую от календаря или часового пояса. Внутри это количество секунд относительно опорной даты.
Создание Date
Date() возвращает текущий момент. Каждый вызов возвращает момент, в который он выполняется.
import Foundation
let now = Date()
print("Now is a Date value")
print(type(of: now))Временные интервалы
TimeInterval — это просто число секунд типа Double. Добавляя или вычитая интервалы, можно сдвигать дату вперёд или назад.
import Foundation
let now = Date()
let inOneHour = now.addingTimeInterval(3600)
print(inOneHour > now)timeIntervalSince
timeIntervalSince(_:) возвращает количество секунд между двумя датами в виде значения TimeInterval. Положительное значение означает, что получатель является более поздней датой.
import Foundation
let start = Date()
let later = start.addingTimeInterval(120)
let gap = later.timeIntervalSince(start)
print("Gap seconds: \(gap)")Сравнение дат
Date соответствует протоколу Comparable, поэтому для непосредственного упорядочивания событий можно использовать <, > и ==.
import Foundation
let a = Date()
let b = a.addingTimeInterval(10)
print(a < b)
print(a == a)Опорные даты
timeIntervalSinceReferenceDate измеряет количество секунд с 1 января 2001 года по UTC, а timeIntervalSince1970 использует эпоху Unix.
import Foundation
let d = Date(timeIntervalSince1970: 0)
print(d.timeIntervalSince1970)Создание по метке эпохи
Можно создать определённый момент времени по метке времени Unix — это удобно при получении времени от сервера.
import Foundation
let epoch = Date(timeIntervalSince1970: 1_700_000_000)
print(epoch.timeIntervalSince1970)Интервал между датами
Метод distance(to:) из Comparable/Strideable также возвращает интервал между двумя датами.
import Foundation
let a = Date()
let b = a.addingTimeInterval(45)
print(a.distance(to: b))Вспомогательные значения для прошлого и будущего
Статические значения .distantPast и .distantFuture предоставляют специальные даты, удобные в качестве значений по умолчанию при сравнении.
import Foundation
let now = Date()
print(Date.distantPast < now)
print(Date.distantFuture > now)Измерение прошедшего времени
Зафиксируйте дату начала, выполните нужную работу, а затем вычтите даты, чтобы измерить продолжительность в секундах.
import Foundation
let start = Date()
var total = 0
for i in 1...1000 { total += i }
let elapsed = Date().timeIntervalSince(start)
print("Sum: \(total)")
print("Elapsed >= 0: \(elapsed >= 0)")Дата не зависит от календаря
Помните: объект Date не содержит сведений о годе, месяце или дне. Чтобы получить их, нужен объект Calendar, которому посвящён следующий урок.
import Foundation
let now = Date()
// To get the year you must use a Calendar, not Date alone.
print("A Date is just an instant in time.")Быстрая проверка
Что возвращает laterDate.timeIntervalSince(earlierDate)?
Итоги
Date представляет один момент времени, измеряемый в секундах. Его можно сдвигать с помощью addingTimeInterval, измерять интервалы с помощью timeIntervalSince, сравнивать операторами и создавать по значениям эпохи. Этот тип не зависит от календаря, поэтому в следующем уроке мы познакомимся с Calendar и DateComponents.
Часто задаваемые вопросы
Урок «Тип Date и интервалы времени» бесплатный?
Да — полный текст урока «Тип Date и интервалы времени» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.
Чему я научусь в уроке «Тип Date и интервалы времени»?
Представляйте моменты времени и их длительность. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Swift Academy?
Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Тип Date и интервалы времени»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Swift Academy?
Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Тип Date и интервалы времени
- Calendar и DateComponents
- Форматирование дат
- Часовые пояса и локали