Jak mogę zamienić ten ciąg "2016-04-14T10:44:00+0000"
na ciąg NSDate
i zachować tylko rok, miesiąc, dzień, godzinę?
W T
środku tego naprawdę rzuca się w oczy to, do czego przywykłem podczas pracy z datami.
swift
nsdate
nsdateformatter
asheyla
źródło
źródło
Odpowiedzi:
Przekonwertuj ciąg ISO8601 na datę
Pobierz składniki daty dla roku, miesiąca, dnia i godziny od daty
Na koniec utwórz nowy
Date
obiekt i odbierz minuty i sekundyWeź również pod uwagę wygodny program formatujący
ISO8601DateFormatter
wprowadzony w iOS 10 / macOS 12:źródło
.hour
Wypróbuj następujący format daty.
Mam nadzieję, że to pomoże..
Swift 4.1:
źródło
W Swift 4.1 możesz:
źródło
Swift 3,0 - 4,2
źródło
Cześć Masz oddzielny format T, a następnie konwertuj, jak chcesz
źródło
Po prostu zdasz swoje
dateformate
i datę, a potem otrzymaszYear,month,day,hour
. Informacje dodatkoweZdobądź rok
Uzyskaj miesiąc
Get Day
Pobierz godzinę
źródło
zrobić funkcję globalną
Wywołana funkcję i przekazać w niej wartość
i tutaj jest wyjście
źródło
W swift4,
// wyjście: - 30 marca 2019 17:30
źródło
po prostu Krok 1> pobierz wartość String z JSON lub dataSource
Krok 2> utwórz zmienną lokalną i przypisz ją.
Krok 3> utwórz wystąpienie DateFormatter.
Krok 4> wywołaj dateFormat z dateFormatter i podaj zapisaną datę dataType.
Krok 5> Przypisz zmienną lokalną do tej zmiennej w celu konwersji.
Krok 6> podaj żądaną datę Formate za pomocą następującego kodu.
Krok 6> Przypisz go do etykiety / tekstu
Kod:
źródło
Swift 5. Aby zobaczyć, czy minęła data:
źródło
Z tym formatem też szalałem.
Zobacz rozwiązanie poniżej.
Twój ciąg, który pochodzi z pleców lub innego źródła:
Określ format daty
Teraz, gdy masz już datę jako Date (), możesz zmienić na dowolny format, używając pliku formatDate.string
Wynik:
źródło
W tym celu użyj biblioteki parsującej ISO8601. Istnieje zbyt wiele sposobów zakodowania łańcucha. Nie polegaj na określonym formacie i nie polegaj na tym, że serwer wysyła zawsze to samo. Problemy zaczynają się od litery „Z” na końcu i obejmują wszystkie odmiany standardu. Biblioteka analizująca poradzi sobie ze wszystkimi przypadkami i zawsze zapewni bezpieczną konwersję - podczas gdy stały ciąg formatujący prawdopodobnie nie powiedzie się w przyszłości.
Możesz użyć jednej z tych bibliotek. Są również dostępne na CococaPods:
https://github.com/boredzo/iso-8601-date-formatter/
https://github.com/malcommac/SwiftDate
Przyjrzyj się wdrożeniom. Obie mają po kilkaset wierszy - nie bez powodu.
W odniesieniu do pytania: Możesz wyciągnąć składniki daty z daty za pomocą NSDateComponents. Przykład na stronie internetowej obejmuje dokładnie Twoją sprawę.
https://developer.apple.com/documentation/foundation/nscalendar/1414841-components?language=objc
Należy pamiętać, że przeliczenie daty będzie uwzględniać strefę czasową. Możesz chcieć jawnie ustawić 'locale' NSCalendar.
źródło
Po prostu użyj SwifterSwift.
źródło