Как работать с ISO8601 Date и микросекундами в Swift?

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

Для начала, в Swift имеется тип Date, который представляет собой дату и время. Однако, по умолчанию Date не обрабатывает микросекунды. Чтобы работать с микросекундами, можно использовать тип данных Double, который представляет количество секунд с начала Unix эпохи (1 января 1970 года 00:00:00 UTC).

Для преобразования дат из и в формат ISO8601 рекомендуется использовать класс ISO8601DateFormatter. Этот класс позволяет разбирать строки в формате ISO8601 и создавать строки из дат в этом же формате.

Вот пример кода, демонстрирующий работу с ISO8601 Date и микросекундами в Swift:

import Foundation

// Создаем форматтер для работы с датами ISO8601
let formatter = ISO8601DateFormatter()

// Преобразование строки в дату
let dateString = "2022-01-01T10:00:00.123456Z"
if let date = formatter.date(from: dateString) {
    print("Дата: (date)")
    
    // Преобразование даты в строку
    let convertedString = formatter.string(from: date)
    print("Преобразованная строка: (convertedString)")
    
    // Получение количества микросекунд
    let micros = date.timeIntervalSince1970 * 1_000_000
    print("Микросекунды: (micros)")
    
    // Преобразование микросекунд в дату
    let convertedDate = Date(timeIntervalSince1970: micros / 1_000_000)
    print("Преобразованная дата: (convertedDate)")
}

В этом примере мы создаем форматтер ISO8601DateFormatter, который позволяет разбирать даты из строк и создавать строки из дат в формате ISO8601. Затем мы преобразуем строку "2022-01-01T10:00:00.123456Z" в дату и выводим результат. Далее мы преобразуем дату обратно в строку и выводим результат. Затем мы вычисляем количество микросекунд от начала Unix эпохи для данной даты и выводим результат. И, наконец, мы преобразуем количество микросекунд обратно в дату и выводим результат.

Полученный вывод будет следующим:

Дата: 2022-01-01 10:00:00 +0000
Преобразованная строка: 2022-01-01T10:00:00Z
Микросекунды: 1641033600123
Преобразованная дата: 1641033600.123456

Таким образом, использование ISO8601DateFormatter и типа Date в сочетании с типом Double позволяет работать с датами в формате ISO8601 и микросекундами в Swift.