2011-06-25 28 views
21

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

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.

+0

bạn đánh bại tôi, ha! +1 –

+0

@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 đó? –

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, DateComponentssecond, 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 DateDateComponents:

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