Тестували за допомогою Swift 4
Отримання поточної дати та часу
Ви можете отримати поточну дату та час так само просто:
let currentDateTime = Date()
Однак, Dateце 64-бітове число з плаваючою комою, яке вимірює кількість секунд з моменту опорної дати 1 січня 2001 року о 00:00:00 UTC . Я можу побачити це число за поточний час, використовуючи
Date().timeIntervalSinceReferenceDate
На момент написання цього повідомлення він повернувся 497626515.185066, ймовірно, не саме те, що шукаєш. Продовжуйте читати.
Створення ще однієї дати та часу
Спосіб 1
Якщо вам відома кількість секунд до або після опорної дати, ви можете скористатися цим.
let someOtherDateTime = Date(timeIntervalSinceReferenceDate: -123456789.0) // Feb 2, 1997, 10:26 AM
Спосіб 2
Звичайно, було б легше використовувати такі речі, як роки, місяці, дні та години (а не відносні секунди) для виготовлення а Date. Для цього ви можете DateComponentsвказати компоненти, а потім Calendarстворити дату. CalendarДає Dateконтекст. В іншому випадку, як би знати, в якому часовому поясі чи календарі це виразити?
// 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)
Інші скорочення часових поясів можна знайти тут . Якщо ви залишите це поле порожнім, тоді за замовчуванням використовується часовий пояс користувача.
Спосіб 3
Найкрасивішим (але не обов’язково найкращим) може бути використання DateFormatter.
let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd HH:mm"
let someDateTime = formatter.date(from: "2016/10/08 22:31")
У технічних стандартах Unicode показати інші формати , що DateFormatterпідставки.
Відображення дати та часу
Спосіб 1
Якщо ви хочете просто відобразити певні компоненти дати або часу, ви можете CalendarUnitвказати компоненти, з яких потрібно витягнути 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
Дивіться також цю відповідь .
Спосіб 2
Метод 1 дав вам компоненти, але було б багато роботи, щоб відформатувати ці числа для кожного стилю, мови та регіону. І не потрібно. Це вже зроблено для вас з DateFormatterкласом.
// 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
Ось продовження наведеного вище коду, який показує більше варіантів форматування:
// "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)
Майте на увазі, що це англійська мова з регіоном, призначеним для США. Для інших мов та регіонів форматування буде виглядати інакше.
Подальше навчання