Это то, что мне приходилось делать несколько раз, но я считаю, что это одна из тех вещей, которые я всегда забываю делать. Поэтому я решил написать сообщение, показывающее, как получить hour, minutes и second с помощью Date.

Первое, что нам нужно сделать, это создать новый экземпляр Date, а также получить текущий Calendar. Для этого мы можем использовать следующий код:

let date = Date()
var calendar = Calendar.current

После этого нам просто нужно решить, какие компоненты мы хотим. В этом случае мы будем использовать hour, minute и second. Есть и другие, полный список Calendar компонентов включает: era, year, month, day, hour, minute, second, weekday, weekdayOrdinal, quarter, weekOfMonth, weekOfYear, yearForWeekOfYear, nanosecond, calendar и timeZone.

Чтобы использовать любое из этих значений, нам нужно использовать наш calendar, который у нас есть. Итак, чтобы получить hour, minute и second, все, что нам нужно сделать, это следующее:

let hour = calendar.component(.hour, from: date)
let minute = calendar.component(.minute, from: date)
let second = calendar.component(.second, from: date)

И это почти все. Одна из проблем заключается в том, что если час, минута или секунда меньше 10, он не будет префиксом значения с 0.

Если хотите, можете также установить timeZone календаря. Для этого вы создаете новый экземпляр TimeZone с идентификатором часового пояса, который вам нужен, а затем устанавливаете свойство timeZone в calendar.

Установить timeZone так же просто:

if let timeZone = TimeZone(identifier: "EST") {
   calendar.timeZone = timeZone
}

Это необходимо сделать до того, как вы получите calendar.component, иначе будет использоваться значение по умолчанию timeZone.

Полный источник:

let date = Date()
var calendar = Calendar.current

if let timeZone = TimeZone(identifier: "EST") {
   calendar.timeZone = timeZone
}

let hour = calendar.component(.hour, from: date)
let minute = calendar.component(.minute, from: date)
let second = calendar.component(.second, from: date)

print("\(hour):\(minute):\(second)")

Первоначально опубликовано на https://programmingwithswift.com 16 октября 2019 г.