Pobierz aktualną datę w Swift 3? [Zamknięte]

115

Jak mogę ustawić bieżącą datę label.text w Swift 3?

Chcę dzisiaj wydrukować na ekranie. Nie znalazłem, jak to zrobić.

W języku C # jest bardzo proste:

var date = DateTime.Now

Muszę szybko napisać 15.09.2016 3. dzięki

yucel
źródło
to już nie działa?
yucel
1
Czy przewinąłeś całą drogę na sam dół, aby uzyskać odpowiedź Swift 3?
koen
Próbowałem, ale nie udało mi się
yucel
1
Prawdopodobnie chcesz użyć NSDateFormattera następnie stringFromDate.
koen

Odpowiedzi:

289

W komentarzu mówisz, że chcesz dostać „15.09.2016”.

W tym celu użyj Datei DateFormatter:

let date = Date()
let formatter = DateFormatter()

Podaj format, który chcesz formatującemu:

formatter.dateFormat = "dd.MM.yyyy"

Pobierz ciąg wynikowy:

let result = formatter.string(from: date)

Ustaw etykietę:

label.text = result

Wynik:

15.09.2016

Eric Aya
źródło
2
W Swift 4.2 DateFormatter ma zarówno właściwości .dateStyle, jak i .timeStyle. Zamiast nieco nieprzejrzystej składni powyżej (która daje bardziej precyzyjną kontrolę - patrz nsdateformatter.com ) możesz użyć dateStyle w połączeniu z locale.
green_knight
63

Możesz to zrobić w ten sposób w Swift 3.0:

let date = Date()
let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month, .day], from: date)

let year =  components.year
let month = components.month
let day = components.day

print(year)
print(month)
print(day)
Jorge Casariego
źródło
22
Nie mogę uwierzyć, nawet po Swift 3, że obsługa dat jest tak zła! To wstyd, biorąc pod uwagę, że Data w .NET była w wersji 1 w 2002 roku z pamięci. DateTime.Now lub DateTime.Now.Month są o wiele łatwiejsze!
csmith
1
Skąd wiesz, czy ten dzień to poniedziałek, wtorek czy środa?
Joseph Astrahan,
1
Sprawdź SwiftDate Cocoapod, jeśli chcesz znacznie łatwiejszej interakcji z datami w szybkim tempie.
Rob Norback
1
@csmith Dzieje się tak, ponieważ nadal jest to stara NSDate, ale ze składnią Swift. Nie został przepisany. Masz jednak rację, praca z tym jest trochę uciążliwa.
bandejapaisa