Две вещи, которые вам нужно сделать, чтобы сформировать дату:
- Установить календарь в экземпляре DateComponents.
- Получите дату, открыв свойство
date
в экземпляре DateComponents.
Кроме того, я бы рекомендовал использовать идентификаторы часовых поясов вместо сокращений для указания часового пояса; Преимущество состоит в том, что идентификаторы автоматически применяют специальные правила, такие как переход на летнее время. (Ниже я заменил UTC зоной "Америка / Чикаго".)
Попробуйте этот код на детской площадке:
var openingGavelDate = DateComponents()
let timeZone = TimeZone(identifier: "America/Chicago")!
openingGavelDate.year = 2019
openingGavelDate.month = 7
openingGavelDate.day = 16
openingGavelDate.hour = 14
openingGavelDate.minute = 00
openingGavelDate.calendar = Calendar.current
openingGavelDate.timeZone = timeZone
let date = openingGavelDate.date
print(date ?? "no date")
Вывод: 2019-07-16 19:00:00 +0000
(ваша дата в GMT.)
Это даст вам дату, но обратите внимание, что класс Date печатается в GMT по умолчанию, поскольку Date
не имеет понятия о часовом поясе.
Чтобы напечатать date
в нужном часовом поясе и формате, используйте DateFormatter
:
let f = DateFormatter()
f.dateFormat = "yyyy-MM-dd hh:mm a"
f.timeZone = TimeZone(identifier: "America/Chicago")!
print(f.string(from: date!))
Вывод: 2019-07-16 02:00 PM
(ваша дата и время, в CST и отформатированы для чтения.)
DateFormatter позволяет вам самостоятельно управлять форматом или следовать системным настройкам пользователя, чтобы определить, что находится в последней строке. См. Документы для DateFormatter
, чтобы узнать, как перевести его в формат, который вы хотите отобразить.