Zacząłem od placu zabaw. Próbuję stworzyć prostą aplikację.
Utworzyłem obiekt daty taki jak ten:
var date = NSDate()
Jak mogę uzyskać bieżącą godzinę? W innych językach mogę zrobić coś takiego:
var hour = date.hour
Ale nie mogę znaleźć żadnych takich właściwości / metod. Znalazłem metodę dateWithCalendarFormat
. Czy powinienem tego użyć? Jeśli tak to jak?
let components = calendar.components(.NSCalendarUnit.Year.union(NSCalendarUnit.Minute), fromDate: date)
, pionowego ukośnika nie można już tutaj używać.let components = calendar.components(NSCalendarUnit.Year.union(NSCalendarUnit.Minute), fromDate: date)
usunięto dodatkowe „.” przed NSCalendarUnitlet components = calendar.components([ .Hour, .Minute, .Second], fromDate: date)
Testowane z Swift 4
Uzyskiwanie aktualnej daty i godziny
Możesz uzyskać bieżącą datę i godzinę tak prosto, jak to:
Jednakże,
Date
jest 64-bitowa liczba zmiennoprzecinkowa mierząc liczbę sekund od daty odniesienia od 1 stycznia 2001 r 00:00:00 UTC . Widzę ten numer dla bieżącej daty i godziny przy użyciuW momencie pisania tego tekstu wrócił
497626515.185066
, prawdopodobnie nie dokładnie to, czego szukasz. Czytaj dalej.Tworzenie innej daty i godziny
Metoda 1
Jeśli znasz liczbę sekund przed lub po dacie odniesienia, możesz jej użyć.
Metoda 2
Oczywiście łatwiej byłoby użyć rzeczy takich jak lata, miesiące, dni i godziny (zamiast względnych sekund) do stworzenia
Date
. W tym celu można użyćDateComponents
do określenia składników, a następnieCalendar
do utworzenia daty.Calendar
DajeDate
kontekst. W przeciwnym razie, skąd miałby wiedzieć, w której strefie czasowej lub kalendarzu wyrazić to?Inne skróty stref czasowych można znaleźć tutaj . Jeśli pozostawisz to pole puste, domyślnie będzie używana strefa czasowa użytkownika.
Metoda 3
Najbardziej zwięzłym (ale niekoniecznie najlepszym) sposobem może być użycie
DateFormatter
.Te normy techniczne Unicode pokazać inne formaty , że
DateFormatter
obsługuje.Wyświetlanie daty i godziny
Metoda 1
Jeśli chcesz tylko wyświetlić niektóre składniki daty lub godziny, możesz użyć
CalendarUnit
do określenia składników, z których chcesz wyodrębnićDate
.Zobacz także tę odpowiedź .
Metoda 2
Metoda 1 dała ci składniki, ale sformatowanie tych liczb dla każdego stylu, języka i regionu wymagałoby dużo pracy. I nie musisz. To już zostało zrobione dla ciebie z
DateFormatter
klasą.Oto kontynuacja powyższego kodu, który pokazuje więcej opcji formatowania:
Pamiętaj jednak, że dotyczy to języka angielskiego z regionem ustawionym na USA. W przypadku innych języków i regionów formatowanie będzie wyglądać inaczej.
Dalsze badanie
źródło
Możesz także skorzystać z wygodnej metody NSDateFormatter, np.
źródło
Swift naprawdę ułatwia tworzenie i używanie rozszerzeń. Tworzę
sharedCode.swift
plik i umieszczam w nim wyliczenia, rozszerzenia i inne zabawne rzeczy. StworzyłemNSDate
rozszerzenie, aby dodać typową funkcjonalność, która jest pracochłonna i brzydka do pisania w kółko:używając tego rozszerzenia możesz teraz zrobić coś takiego:
Które na 11:51 napisałbym:
źródło
Odpowiedź Swift 2:
źródło
Szybki 4
WYNIK
2018-maj-01 10:41:31
źródło
Swift 3:
PS - nie jestem pewien, co dokładnie oznacza pytanie, określając aktualny czas (i godzinę) jako datę, ale mam nadzieję, że powyższe informacje powinny wyjaśnić wystarczająco dużo, aby odpowiedzieć na pytanie.
źródło
Dzięki Swift 5
Foundation
oferuje wiele sposobów uzyskania wartości godziny zDate
obiektu. W zależności od potrzeb możesz wybrać jeden z czterech następujących fragmentów kodu placu zabaw .# 1. Przy użyciu
Calendar
dateComponents(_:from:)
metodyCalendar
ma metodę o nazwiedateComponents(_:from:)
.dateComponents(_:from:)
ma następującą deklarację:Stosowanie:
# 2. Przy użyciu
Calendar
component(_:from:)
metodyCalendar
ma metodę o nazwiecomponent(_:from:)
.component(_:from:)
ma następującą deklarację:Stosowanie:
# 3. Korzystanie z
DateFormatter
dateFormat
nieruchomościDateFormatter
ma właściwość o nazwiedateFormat
.dateFormat
ma następującą deklarację:Stosowanie:
# 4. Za pomocą
Dateformatter
setLocalizedDateFormatFromTemplate(_:)
metodyDateformatter
ma metodę o nazwiesetLocalizedDateFormatFromTemplate(_:)
.setLocalizedDateFormatFromTemplate(_:)
ma następującą deklarację:Stosowanie:
źródło
jeśli potrzebujesz tylko godziny dnia
źródło
W Swift 3
źródło
let calendar = Calendar.current; let unitFlags: Set<Calendar.Component> = Set<Calendar.Component ([.hour]); let components = calendar.dateComponents(unitFlags, from: self)
Korzystanie z formatyzatora daty - Swift 3.0
Aktualizuj datę i godzinę co sekundę
Uwaga: DateAndTime w kodzie Timer to nazwa klasy.
źródło
Wiem, że jest wiele odpowiedzi, ale myślę, że moje mogą być dla wielu wygodniejsze
źródło
Możesz tego spróbować
Teraz wywołaj tę metodę i otrzymaj datę z godziną, minutą i sekundą
źródło
Możesz użyć w szybkim 4 lub 5 jak poniżej
Ouput będzie jak ryk
źródło
Xcode 8.2.1 • Swift 3.0.2
źródło
Date().hour
W oparciu o epicko zwięzłe rozwiązanie noiiv , oto jeszcze bardziej zwięzłe wdrożenie Swift 3/4:
Szybki 3/4
Ponadto, rozszerzając rozszerzenie Leo Dabusa, możemy mieć:
I użyj go w ten sposób:
źródło
Date
obiektu. Metoda komponentu kalendarza Btw jest bardziej odpowiednia dla pojedynczego komponentuDateComponents.year
akcesorium toInt?
component
metody dla tych akcesorówtylko na datę w określonym formacie
źródło
Szybki 5
i funkcja wywołania printTimestamp ()
źródło
Możesz utworzyć rozszerzenie
Date
, w ten sposób możesz łatwo wywołać je w innych plikach. Oto przykład rozszerzenia daty korzystającego z obliczonej właściwości.Wydrukuje to: „Dzisiaj, 16:55”
źródło
Możesz użyć Swift4 lub Swift 5 poniżej:
dane wyjściowe takie jak:
źródło
Ponieważ musisz sformatować odpowiedź w określony sposób, możesz łatwo użyć tej metody, domyślnie = "dd-MM-rrrr".
Teraz można uzyskać dzisiejszą datę za pomocą
źródło
SWIFT 4:
źródło
źródło
Oto rozszerzenie SWIFT, aby uzyskać aktualny czas lokalizacji urządzenia (GMT).
Uzyskaj teraz czas: -
źródło
Współpracuje z Swift 5 (Xcode 10 i Xcode 11) (z Francji UTC)
Jeśli chcesz wyświetlać tylko datę, ustaw
formatter.dateFormat
Aby wyświetlić tylko godziny, zmień
formatter.dateFormat
naNie zapomnij dodać
getCurrentDateTime()
naviewDidLoad
.źródło
Możesz uzyskać z Dateformatter
źródło