Diuji dengan Swift 4
Mendapatkan Tanggal dan Waktu Saat Ini
Anda bisa mendapatkan tanggal dan waktu saat ini sesederhana ini:
let currentDateTime = Date()
Namun, Date
adalah angka floating point 64-bit yang mengukur jumlah detik sejak tanggal referensi 1 Januari 2001 pukul 00:00:00 UTC . Saya bisa melihat nomor itu untuk datetime saat ini dengan menggunakan
Date().timeIntervalSinceReferenceDate
Pada saat penulisan ini, ia kembali 497626515.185066
, mungkin tidak persis apa yang Anda cari. Teruslah membaca.
Membuat Tanggal dan Waktu Lain
Metode 1
Jika Anda tahu jumlah detik sebelum atau setelah tanggal referensi, Anda dapat menggunakannya.
let someOtherDateTime = Date(timeIntervalSinceReferenceDate: -123456789.0) // Feb 2, 1997, 10:26 AM
Metode 2
Tentu saja, akan lebih mudah untuk menggunakan hal-hal seperti tahun, bulan, hari dan jam (daripada detik relatif) untuk membuat Date
. Untuk ini, Anda dapat menggunakan DateComponents
untuk menentukan komponen dan kemudian Calendar
untuk membuat tanggal. The Calendar
memberikan Date
konteks. Kalau tidak, bagaimana ia bisa tahu zona waktu atau kalender mana untuk mengekspresikannya?
// 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)
Singkatan zona waktu lainnya dapat ditemukan di sini . Jika Anda membiarkannya kosong, maka defaultnya adalah menggunakan zona waktu pengguna.
Metode 3
Cara yang paling ringkas (tapi belum tentu yang terbaik) bisa digunakan DateFormatter
.
let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd HH:mm"
let someDateTime = formatter.date(from: "2016/10/08 22:31")
Standar teknis Unicode menunjukkan format lain yang DateFormatter
mendukung.
Menampilkan Tanggal dan Waktu
Metode 1
Jika Anda hanya ingin menampilkan komponen tertentu dari tanggal atau waktu yang dapat Anda gunakan CalendarUnit
untuk menentukan komponen yang ingin Anda ekstrak 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
Lihat jawaban ini juga.
Metode 2
Metode 1 memberi Anda komponen, tetapi akan banyak pekerjaan untuk memformat angka-angka itu untuk setiap gaya, bahasa, dan wilayah. Dan Anda tidak perlu melakukannya. Ini sudah dilakukan untuk Anda bersama DateFormatter
kelas.
// 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
Ini adalah kelanjutan dari kode di atas yang menunjukkan lebih banyak opsi pemformatan:
// "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)
Perlu diingat, bahwa ini untuk bahasa Inggris dengan wilayah yang ditetapkan ke AS. Untuk bahasa dan wilayah lain pemformatan akan terlihat berbeda.
Pelajaran lanjutan