Сегодня мы поговорим о работе с датами, временем и календарем в быстрых и, точнее, компонентах даты. С датой и временем всегда сложно работать, и есть много разных способов работать с ними. Чтобы начать работать с датой и временем в iOS, вы должны быть знакомы как минимум с этими тремя объектами: Date, DateFormatter и DateComponents.

Структура даты

Дата - это структура, принадлежащая фреймворку Foundation.

Он представляет собой конкретный момент времени, не зависящий от календаря или часового пояса.

Структура даты соединяется с классом NSDate.

Он предоставляет методы для создания дат, сравнения дат и расчета временных интервалов между датами.

Он НЕ делает ничего, связанного с форматом даты или преобразованием между строкой и датой.

DateFormatter класс

Принадлежит к структуре Foundation

Средство форматирования, предоставляющее методы преобразования даты в строку и из строки в дату.

Он также позволяет вам настроить представление строки даты, используя предопределенные стили или создав свой собственный формат.

Он также поддерживает локализацию.

Структура DateComponents

Принадлежит к фреймворку Foundation.

Это объект Date или Time, представленный в таких единицах, как год, месяц, день, минута или час в конкретном календаре.

Он обеспечивает прямой доступ к разным частям даты и времени.

Теперь давайте напишем код, чтобы продемонстрировать, как работать с датами в Swift.

чтобы получить текущую дату в формате «гггг-ММ-дд ЧЧ: мм: сс»

let rightNow = Date()
let dateFormat = DateFormatter()
dateFormat.dateFormat = "yyyy-MM-dd HH:mm:ss"
let formattedDateAndTime = format.string(from: rightNow)
print(formattedDateAndTime)

если вам нужен текущий день, месяц, год.
используйте класс Calendar

let calendar = Calendar.current
let year = calendar.component(.year, from: rightNow)
let month = calendar.component(.month, from: rightNow)
let day = calendar.component(.day, from: rightNow)
let hour = calendar.component(.hour, from: rightNow)
let minute = calendar.component(.minute, from: rightNow)
let second = calendar.component(.second, from: rightNow)
print("\(year), \(month), \(day), \(hour), \(minute), \(second)")

все возвращает int. если моль - сентябрь. месяц вернется 9.
день недели.

let weekday = calendar.component(.weekday, from: date)
print("\(weekDay)")

Он вернет 1, когда это воскресенье, как в григорианском календаре.

добавить месяц

var lastMonthDate = Calendar.current.date(byAdding: .month, value: -1, to: date)
let lastMonth = calendar.component(.month, from:lastMonthDate!)
print(lastMonth)

он дает вам номер последнего месяца, например, если это июль, то он дает вам июнь.

let calendar = Calendar.current
let dateComponents = DateComponents(calendar: calendar, year: 1998, month: 6, day: 11)
print(dateComponents)
// if you want to convert it into proper date and time
let composedDate = calendar.date(from: dateComponents)
print(composedDate)

он дает вам текущий тип календаря и год, месяц и день, которые вы указали выше.

var dateArray = [Date]()
for day in -30...30 {
dateArray.append(Date(timeIntervalSinceNow: Double(day * 86400)))
}
print(dateArray)

он дает вам массив из 60 дат, что означает 30 дней назад (текущая дата) и 30 дней вперед.

Преобразование даты в строку с использованием DateFormatter

let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .full
dateFormatter.timeStyle = .full
let dateString = dateFormatter.string(from: date)

Результат:

Saturday, November 25, 2017 at 8:22:04 PM GMT

Сначала мы создаем экземпляр DateFormatter

Не стесняйтесь задавать вопросы об этой статье, я здесь, чтобы ответить.
Понравилась эта статья?

Спасибо, что прочитали эту статью.
Вы можете дать до 50 аплодисментов: долгим нажатием на кнопку хлопка.
Если вам понравилась эта статья или вы узнаете что-то новое, поддержите меня, поделившись этой статьей.

Спасибо.