Đã thử nghiệm với Swift 4
Lấy ngày và giờ hiện tại
Bạn có thể nhận được ngày giờ hiện tại đơn giản như sau:
let currentDateTime = Date()
Tuy nhiên, Date
là số dấu phẩy động 64 bit đo số giây kể từ ngày tham chiếu ngày 1 tháng 1 năm 2001 lúc 00:00:00 UTC . Tôi có thể thấy số đó cho datetime hiện tại bằng cách sử dụng
Date().timeIntervalSinceReferenceDate
Tại thời điểm viết bài này, nó đã trở lại 497626515.185066
, có thể không chính xác những gì bạn đang tìm kiếm. Hãy đọc tiếp.
Tạo ngày và giờ khác
Phương pháp 1
Nếu bạn biết số giây trước hoặc sau ngày tham chiếu, bạn có thể sử dụng số đó.
let someOtherDateTime = Date(timeIntervalSinceReferenceDate: -123456789.0) // Feb 2, 1997, 10:26 AM
Phương pháp 2
Tất nhiên, sẽ dễ dàng hơn khi sử dụng những thứ như năm, tháng, ngày và giờ (thay vì giây tương đối) để tạo ra một Date
. Đối với điều này, bạn có thể sử dụng DateComponents
để chỉ định các thành phần và sau đó Calendar
để tạo ngày. Việc Calendar
đưa ra Date
bối cảnh. Nếu không, làm thế nào nó biết múi giờ hoặc lịch để thể hiện nó trong?
// 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)
Viết tắt múi giờ khác có thể được tìm thấy ở đây . Nếu bạn để trống, thì mặc định là sử dụng múi giờ của người dùng.
Phương pháp 3
Cách ngắn gọn nhất (nhưng không nhất thiết là tốt nhất) có thể là sử dụng DateFormatter
.
let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd HH:mm"
let someDateTime = formatter.date(from: "2016/10/08 22:31")
Các tiêu chuẩn kỹ thuật Unicode hiển thị các định dạng khác mà DateFormatter
hỗ trợ.
Hiển thị ngày và giờ
Phương pháp 1
Nếu bạn muốn chỉ hiển thị các thành phần nhất định của ngày hoặc thời gian bạn có thể sử dụng CalendarUnit
để chỉ định các thành phần mà bạn muốn trích xuất từ đó 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
Xem câu trả lời này cũng có.
Phương pháp 2
Phương pháp 1 đã cung cấp cho bạn các thành phần, nhưng sẽ rất nhiều công việc để định dạng các số đó cho mọi kiểu dáng, ngôn ngữ và khu vực. Và bạn không cần phải làm vậy. Điều này đã được thực hiện cho bạn với DateFormatter
lớp.
// 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
Đây là phần tiếp theo của đoạn mã trên cho thấy nhiều tùy chọn định dạng hơn:
// "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)
Mặc dù vậy, hãy ghi nhớ rằng đây là tiếng Anh với khu vực được đặt thành Hoa Kỳ. Đối với các ngôn ngữ và khu vực khác, định dạng sẽ khác nhau.
Học cao hơn