Nhận ngày hiện tại trong Swift 3? [đóng cửa]


114

Làm cách nào để đặt ngày hiện tại của label.text trong Swift 3?

Tôi muốn in ngay hôm nay ra màn hình. Tôi đã không tìm thấy làm thế nào để làm điều đó.

Trong c # rất đơn giản:

var date = DateTime.Now

Tôi cần viết 15.09.2016 trong nhanh chóng 3. cảm ơn


2
Có thể có bản sao của stackoverflow.com/questions/24070450/…
koen

nó không hoạt động nữa?
yucel

1
Bạn có cuộn đến cuối để tìm câu trả lời Swift 3 không?
koen

Tôi đã thử nhưng không thành công
yucel 15/09/2016

1
Bạn có thể muốn sử dụng một NSDateFormattervà sau đó stringFromDate.
koen

Câu trả lời:


289

Bạn nói trong nhận xét rằng bạn muốn nhận "15.09.2016".

Đối với điều này, sử dụng DateDateFormatter:

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

Cung cấp định dạng bạn muốn cho trình định dạng:

formatter.dateFormat = "dd.MM.yyyy"

Lấy chuỗi kết quả:

let result = formatter.string(from: date)

Đặt nhãn của bạn:

label.text = result

Kết quả:

15.09.2016


2
Trong Swift 4.2, DateFormatter có cả thuộc tính .dateStyle và .timeStyle. Thay vì cú pháp hơi mờ đục ở trên (cung cấp khả năng kiểm soát chi tiết hơn - xem nsdateformatter.com ), bạn có thể sử dụng dateStyle kết hợp với ngôn ngữ.
green_knight,

63

Bạn có thể thực hiện theo cách này với 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)

22
Tôi không thể tin được ngay cả sau Swift 3 rằng việc xử lý ngày tháng lại tệ đến vậy! Thật đáng xấu hổ khi xem xét Date trong .NET ở phiên bản 1 năm 2002 từ bộ nhớ. DateTime.Now hoặc DateTime.Now.Month dễ dàng hơn nhiều!
csmith

1
Làm thế nào để bạn biết nếu ngày đó là Thứ Hai, Thứ Ba hay Thứ Tư?
Joseph Astrahan

1
Hãy xem SwiftDate Cocoapod nếu bạn muốn một cách dễ dàng hơn để tương tác nhanh chóng với ngày tháng.
Rob Norback, 7/717

1
@csmith Đó là vì nó vẫn là NSDate cũ nhưng với cú pháp Swift. Nó đã không được viết lại. Mặc dù vậy, bạn nói đúng, đó là một chút khó khăn để làm việc với.
bandejapaisa
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.