Làm cách nào để có được các NSDateComponents của một NSDate đơn lẻ? Tôi không muốn các thành phần của sự khác biệt giữa 2 ngày, chỉ là giây, phút, giờ, ngày, tháng và năm của một NSDate?NSDateComponents của một NSDate
21
A
Trả lời
38
Có một ví dụ trong Apple docs, ví dụ 3: Bắt các thành phần của một ngày:
NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents =
[gregorian components:(NSDayCalendarUnit |
NSWeekdayCalendarUnit) fromDate:today];
NSInteger day = [weekdayComponents day];
NSInteger weekday = [weekdayComponents weekday];
Lưu ý rằng bạn phải 'hoặc' cùng các calendar units bạn muốn trong cuộc gọi của phương pháp components
.
6
sử dụng phương pháp NSCalendar của:
- (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)date
như:
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDate *date = [NSDate date];
NSCalendar * cal = [NSCalendar currentCalendar];
NSDateComponents *comps = [cal components:unitFlags fromDate:date];
0
trong Swift 2.x các thành phần bạn muốn được thông qua như thế này.
let gregorianCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
let weekdayHourMinutes = gregorianCalendar?.components([.Weekday, .Hour, .Minute], fromDate: date)
2
Theo Apple phát triển API Reference, DateComponents
có second
, tài sản minute
, hour
, day
, month
, year
dụ.
Mã 3 Sân chơi Swift sau đây cho thấy làm thế nào để có được giây, phút, giờ, ngày, tháng, năm thành phần từ một trường hợp sử dụng Date
DateComponents
:
import Foundation
var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = TimeZone(abbreviation: "CET")!
let date = Date()
// Get seconds, minutes, hours, day, month and year
let components = calendar.dateComponents([.second, .minute, .hour, .day, .month, .year], from: date)
let seconds = components.second
let minutes = components.minute
let hours = components.hour
let day = components.day
let month = components.month
let year = components.year
// Print components
print(String(reflecting: seconds)) // prints Optional(33)
print(String(reflecting: minutes)) // prints Optional(42)
print(String(reflecting: hours)) // prints Optional(22)
print(String(reflecting: day)) // prints Optional(17)
print(String(reflecting: month)) // prints Optional(12)
print(String(reflecting: year)) // prints Optional(2016)
/* ... */
// Set a formatter in order to display date
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .long
formatter.timeZone = TimeZone(abbreviation: "CET")
formatter.locale = Locale(identifier: "fr_FR")
print(formatter.string(from: date)) // prints 17/12/2016 22:42:33 UTC+1
Các vấn đề liên quan
- 1. NSDate từ NSDateComponents
- 2. NSDate trừ một tháng
- 3. Khởi tạo đối tượng NSDate với thời gian cụ thể
- 4. Trong NSDateComponents, làm thế nào để bạn biết nếu nó là AM hoặc PM?
- 5. tạo NSDate từ một chuỗi
- 6. NSDate, so sánh hai ngày
- 7. NSDate với thành phần ngày từ thành phần một và thời gian từ một NSDate
- 8. Làm cách nào để nhận NSDate vào 00:00 vào ngày [NSDate date]?
- 9. NSDate cho ngày đầu tiên của tháng
- 10. Đặt NSDate thành ngày, giờ và múi giờ cụ thể
- 11. làm thế nào tôi có thể thêm một phút trong NSDate hiện tại của iphone và lưu trong NSDate?
- 12. NSDate - Đặt một ngày trong tương lai
- 13. Nhận NSDate từ NSDate được điều chỉnh theo múi giờ
- 14. NSPredicate: lọc đối tượng theo ngày thuộc tính NSDate
- 15. Định dạng NSDate với Tên Tháng/Ngày viết tắt
- 16. Tên ngày từ NSDate?
- 17. ngày Thêm vào NSDate
- 18. NSDate - Offsetting Múi giờ
- 19. UIDatePicker trở sai NSDate
- 20. NSTimeInterval to NSDate
- 21. Tạo NSDate Monotouch
- 22. Http ngày để NSDate
- 23. NSString để NSDate
- 24. NSDate giữa hai NSDates
- 25. NSDate từ chuỗi
- 26. Làm thế nào để trừ một giờ từ một NSDate?
- 27. NSDate từ NSString
- 28. Cách tính NSDate đầu tiên của tuần hiện tại?
- 29. Thay đổi năm, tháng và ngày của đối tượng NSDate
- 30. làm tròn của NSdate đến giờ gần nhất trong iOS
bạn đánh bại tôi, ha! +1 –
@martin clayton, Xin chào, tôi đã đặt thời gian, giờ và giây cụ thể cho NSDateComponents và bây giờ tôi muốn tạo lại ngày với những NSDateComponents đó. Làm thế nào tôi có thể làm điều đó? –