docs.a374.ru

Работа с датами. Начало…

image-top

Development

Последовательность программирования

В системе MacOS установлен календарь и это структура по умолчанию заполненная данными текущего дня. Данными такой структуры являются: число, месяц, год, временная зона и другие значения соответствующие системным настройкам данной локализации установленной пользователем в настройках.

Проядок написания кода, или блок-схема выглядит так:

image-top

Первым делом, вы должны создать экземпляр календаря. Далее инициализировать этот объект данными текущей даты. По умолчанию данные даты – это .свойства текущего дня. С помощью функции .component() вы можете получать части этих данных, то есть свойства. Чтобы получить данные другого дня требуется сначала их установить с помощью структуры DateComponents(). После этого данные установленного дня можно получать с помощью вышеперечисленных функций и производить с ними вычисления.

В коде это выглядит так:

///экземпляр календаря установленный пользователем в системе macOS
let calendar = Calendar.current

Далее можно получать отдельные компоненты из текущей даты обращаясь к её свойству .year. То есть обращаемся к календарю, вызываем у него функцию component(), в параметрах функции указываем какое свойство нас интересует и из какой даты. В приведённом ниже примере датой является переменная currentDate.

/// Получаем текущий год
let currentYear = calendar.component( .year, from: currentDate)

Далее создадим свою дату. Создадим структуру с данными и инициализируем новый экземпляр календаря с помощью метода date()

// Установка даты в 2099-м годе
let easter2099 = DateComponents( calendar: calendar,  year: 2099, month: 4, day: 12 )
// возвращается изготовленная дата календаря
let onedate = calendar.date(from: easter2099)

Теперь мы можем получать свойства из двух дат. Можем получать как один компонент, так и множество компонентов – они же свойства.

// Получение свойствa календаря по установленной дате `easter2099`
let cal = easter2099.calendar
let day = easter2099.day
let month = easter2099.month
let year = easter2099.year
let timeZ = easter2099.calendar?.localeе

Теперь давайте получим сразу много свайств c помощью :

// Получение свойст для вывода даты
let lotsOnadate = calendar.dateComponents( [.year,.month, .timeZone, .isLeapMonth], from: onedate!)

Далее, более подробное описание работы со временем можно найти в документации.


img


     
← назад 🔝 далее →