Getestet mit Swift 4
Abrufen des aktuellen Datums und der aktuellen Uhrzeit
So einfach können Sie das aktuelle Datum und die Uhrzeit abrufen:
let currentDateTime = Date()
Es handelt sich jedoch Date
um eine 64-Bit-Gleitkommazahl, die die Anzahl der Sekunden seit dem Referenzdatum vom 1. Januar 2001 um 00:00:00 UTC misst . Ich kann diese Nummer für die aktuelle Datums- / Uhrzeitangabe mit verwenden
Date().timeIntervalSinceReferenceDate
Zum Zeitpunkt dieses Schreibens kehrte es zurück 497626515.185066
, wahrscheinlich nicht genau das, wonach Sie suchen. Weiter lesen.
Erstellen eines anderen Datums und einer anderen Uhrzeit
Methode 1
Wenn Sie die Anzahl der Sekunden vor oder nach dem Referenzdatum kennen, können Sie diese verwenden.
let someOtherDateTime = Date(timeIntervalSinceReferenceDate: -123456789.0) // Feb 2, 1997, 10:26 AM
Methode 2
Natürlich wäre es einfacher, Dinge wie Jahre, Monate, Tage und Stunden (anstatt relative Sekunden) zu verwenden, um eine zu erstellen Date
. Hierzu können Sie DateComponents
die Komponenten angeben und anschließend Calendar
das Datum erstellen. Das Calendar
gibt den Date
Kontext. Wie würde es sonst wissen, in welcher Zeitzone oder in welchem Kalender es ausgedrückt werden soll?
// Specify date components
var dateComponents = DateComponents()
dateComponents.year = 1980
dateComponents.month = 7
dateComponents.day = 11
dateComponents.timeZone = TimeZone(abbreviation: "JST") // Japan Standard Time
dateComponents.hour = 8
dateComponents.minute = 34
// Create date from components
let userCalendar = Calendar.current // user calendar
let someDateTime = userCalendar.date(from: dateComponents)
Weitere Zeitzonenabkürzungen finden Sie hier . Wenn Sie dieses Feld leer lassen, wird standardmäßig die Zeitzone des Benutzers verwendet.
Methode 3
Der prägnanteste Weg (aber nicht unbedingt der beste) könnte sein DateFormatter
.
let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd HH:mm"
let someDateTime = formatter.date(from: "2016/10/08 22:31")
Die Unicode - technischen Standards zeigen andere Formate , dass DateFormatter
Stützen.
Datum und Uhrzeit anzeigen
Methode 1
Wenn Sie nur bestimmte Komponenten des Datums oder der Uhrzeit anzeigen möchten, können Sie CalendarUnit
die Komponenten angeben, aus denen Sie extrahieren möchten Date
.
// get the current date and time
let currentDateTime = Date()
// get the user's calendar
let userCalendar = Calendar.current
// choose which date and time components are needed
let requestedComponents: Set<Calendar.Component> = [
.year,
.month,
.day,
.hour,
.minute,
.second
]
// get the components
let dateTimeComponents = userCalendar.dateComponents(requestedComponents, from: currentDateTime)
// now the components are available
dateTimeComponents.year // 2016
dateTimeComponents.month // 10
dateTimeComponents.day // 8
dateTimeComponents.hour // 22
dateTimeComponents.minute // 42
dateTimeComponents.second // 17
Siehe auch diese Antwort .
Methode 2
Methode 1 gab Ihnen die Komponenten, aber es wäre eine Menge Arbeit, diese Zahlen für jeden Stil, jede Sprache und jede Region zu formatieren. Und das musst du nicht. Dies wurde bereits für Sie mit der DateFormatter
Klasse erledigt .
// get the current date and time
let currentDateTime = Date()
// initialize the date formatter and set the style
let formatter = DateFormatter()
formatter.timeStyle = .medium
formatter.dateStyle = .long
// get the date time String from the date object
formatter.string(from: currentDateTime) // October 8, 2016 at 10:48:53 PM
Hier ist eine Fortsetzung des obigen Codes, der weitere Formatierungsoptionen zeigt:
// "10/8/16, 10:52 PM"
formatter.timeStyle = .short
formatter.dateStyle = .short
formatter.string(from: currentDateTime)
// "Oct 8, 2016, 10:52:30 PM"
formatter.timeStyle = .medium
formatter.dateStyle = .medium
formatter.string(from: currentDateTime)
// "October 8, 2016 at 10:52:30 PM GMT+8"
formatter.timeStyle = .long
formatter.dateStyle = .long
formatter.string(from: currentDateTime)
// "October 8, 2016"
formatter.timeStyle = .none
formatter.dateStyle = .long
formatter.string(from: currentDateTime)
// "10:52:30 PM"
formatter.timeStyle = .medium
formatter.dateStyle = .none
formatter.string(from: currentDateTime)
Beachten Sie jedoch, dass dies für Englisch gilt und die Region auf die USA ausgerichtet ist. Für andere Sprachen und Regionen sieht die Formatierung anders aus.
Weitere Studie