Analiza składniowa daty z łańcucha znaków

Swift:
Analiza składniowa daty z łańcucha znaków

Jak to zrobić:

Używając DateFormatter z biblioteki Foundation

Standardowa biblioteka Swifta, Foundation, dostarcza DateFormatter do konwertowania stringów na obiekty Date i vice versa. Aby sparsować datę ze stringa, należy określić format daty odpowiadający stringowi, a następnie użyć formatera do jej parsowania.

import Foundation

let dateString = "2023-04-30"
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
if let date = formatter.date(from: dateString) {
    print("Sparsowana data: \(date)")
} else {
    print("Nie udało się sparsować daty")
}
// Przykładowy wynik: Sparsowana data: 2023-04-29 22:00:00 +0000

Należy zauważyć, że wynik może się różnić w zależności od twojej strefy czasowej.

Używając ISO8601DateFormatter

Dla formatów dat ISO 8601, Swift dostarcza specjalizowany formater, ISO8601DateFormatter, który upraszcza proces parsowania.

import Foundation

let dateString = "2023-04-30T15:00:00+00:00"
let isoFormatter = ISO8601DateFormatter()
if let date = isoFormatter.date(from: dateString) {
    print("Sparsowana data ISO8601: \(date)")
} else {
    print("Nie udało się sparsować daty ISO8601")
}
// Przykładowy wynik: Sparsowana data ISO8601: 2023-04-30 15:00:00 +0000

Używając biblioteki zewnętrznej: SwiftDate

Chociaż Swift zapewnia solidne narzędzia do parsowania dat, biblioteki zewnętrzne jak SwiftDate oferują jeszcze większą elastyczność i wygodę. Po dodaniu SwiftDate do projektu, parsowanie staje się tak proste jak:

import SwiftDate

let dateString = "30 kwietnia 2023"
if let date = dateString.toDate("MMMM dd, yyyy") {
    print("Data sparsowana za pomocą SwiftDate: \(date)")
} else {
    print("Nie udało się sparsować daty za pomocą SwiftDate")
}
// Przykładowy wynik: Data sparsowana za pomocą SwiftDate: 2023-04-30 00:00:00 +0000

SwiftDate upraszcza parsowanie z użyciem języka naturalnego i szerokiego zakresu formatów dat, czyniąc go potężnym dodatkiem do zestawu narzędzi programistycznych Swift.