2012-06-24 27 views
22

से एक और समय घटक से दिनांक घटक के साथ एनएसडीएटी मेरे पास मेरे ऐप में दो UIDatePicker नियंत्रण हैं, एक UIDatePickerModeDate के साथ कॉन्फ़िगर किया गया है और एक UIDatePickerModeTime के साथ।किसी अन्य NSDate

मैं UIDatePicker की तारीख के साथ एक NSDate ऑब्जेक्ट को कॉन्फ़िगर करना चाहता हूं और दूसरे से समय ... कैसे?

धन्यवाद, मार्क

उत्तर

56

DATE1 मान लें और DATE2 अपने दो NSDate मान हैं। दिनांक 1 में आपके दिनांक घटकों और दिनांक 2 में आपके समय घटक शामिल हैं। इस तरीके से उन्हें एक साथ जोड़ देगा:

NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 

// Extract date components into components1 
NSDateComponents *components1 = [gregorianCalendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit 
                fromDate:date1]; 

// Extract time components into components2 
NSDateComponents *components2 = [gregorianCalendar components:NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit 
                fromDate:date2]; 

// Combine date and time into components3 
NSDateComponents *components3 = [[NSDateComponents alloc] init]; 

[components3 setYear:components1.year]; 
[components3 setMonth:components1.month]; 
[components3 setDay:components1.day];  

[components3 setHour:components2.hour]; 
[components3 setMinute:components2.minute]; 
[components3 setSecond:components2.second];   

// Generate a new NSDate from components3. 
NSDate *combinedDate = [gregorianCalendar dateFromComponents:components3]; 

// combinedDate contains both your date and time! 

आईओएस 8.0 के लिए +

NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; 

// Extract date components into components1 
NSDateComponents *components1 = [gregorianCalendar components:(NSCalendarUnit)(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) 
                fromDate:date1]; 

// Extract time components into components2 
NSDateComponents *components2 = [gregorianCalendar components:(NSCalendarUnit)(NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) 
                fromDate:date2]; 

// Combine date and time into components3 
NSDateComponents *components3 = [[NSDateComponents alloc] init]; 

[components3 setYear:components1.year]; 
[components3 setMonth:components1.month]; 
[components3 setDay:components1.day]; 

[components3 setHour:components2.hour]; 
[components3 setMinute:components2.minute]; 
[components3 setSecond:components2.second]; 

// Generate a new NSDate from components3. 
NSDate * combinedDate = [gregorianCalendar dateFromComponents:components3]; 

// combinedDate contains both your date and time! 
+0

HI melsam, काफी मैनुअल लेकिन यह काम करना चाहिए: डी धन्यवाद! – Cornelius

+0

अच्छा काम दोस्त ... बहुत बहुत धन्यवाद –

+0

धन्यवाद लाखों –

5
NSCalendar *calendar= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSCalendarUnit unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; 
NSDate *date = [NSDate date];//datapicker date 
NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:date]; 

NSInteger year = [dateComponents year]; 
NSInteger month = [dateComponents month]; 
NSInteger day = [dateComponents day]; 
NSInteger hour = [dateComponents hour]; 
NSInteger minute = [dateComponents minute]; 
NSInteger second = [dateComponents second]; 
6

स्विफ्ट में:

let calendar = NSCalendar.currentCalendar() 
let date1 = NSDate() // PickerDateMode 
let date2 = NSDate() // PickerHourMode 

let componentsOne = calendar.components([.Year, .Month, .Day], fromDate: date1) 
let componentsTwo = calendar.components([.Hour, .Minute], fromDate: date2) 

let totalComponents = NSDateComponents() 
totalComponents.year = componentsOne.year 
totalComponents.month = componentsOne.month 
totalComponents.day = componentsOne.day 
totalComponents.hour = componentsTwo.hour 
totalComponents.minute = componentsTwo.minute 

let finalDate = calendar.dateFromComponents(totalComponents)