2011-03-16 9 views
5

मैं 2 NSDates के केवल वर्ष-महीने के घटकों की तुलना कैसे करूं?एनएसडीएटी के कुछ घटकों की तुलना करना?

+0

संभव डुप्लिकेट (http://stackoverflow.com/questions/3432700/compare-nsdate-objects-only-in [NSDate साल माह दिन के मामले में केवल वस्तुओं की तुलना करें] वर्ष-दर-साल-दर-दिन) –

उत्तर

11

तो यहाँ तुम कैसे करते होता है। फिर हम उन तिथियों की तुलना करते हैं (जिनके पास अब समय घटक नहीं है, केवल एक तारीख घटक) और देखें कि वे एक दूसरे से तुलना कैसे करते हैं।

चेतावनी: ब्राउज़र में टाइप किया गया और संकलित नहीं किया गया। चेतावनी कार्यान्वयन

4

इस विषय NSDate get year/month/day

चेक बाहर एक बार जब आप दिन/माह/वर्ष बाहर खींच, तो आप उन्हें पूर्णांक के रूप में तुलना कर सकते हैं।

आपको लगता है कि विधि पसंद नहीं है

इसके बजाय, आप इस की कोशिश कर सकते ..

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

[dateFormatter setDateFormat:@"yyyy"]; 
int year = [[dateFormatter stringFromDate:[NSDate date]] intValue]; 

[dateFormatter setDateFormat:@"MM"]; 
int month = [[dateFormatter stringFromDate:[NSDate date]] intValue]; 

[dateFormatter setDateFormat:@"dd"]; 
int day = [[dateFormatter stringFromDate:[NSDate date]] intValue]; 
  • और एक और तरीका है ...

    NSDateComponents *dateComp = [calendar components:unitFlags fromDate:date]; 
    
    NSInteger year = [dateComp year]; 
    
    NSInteger month = [dateComp month]; 
    
    NSInteger day = [dateComp day]; 
    
+0

'एनएससीएंडेंडर 'आईओएस –

+0

पर काम करता है बहुत बढ़िया, मैंने कहीं पढ़ा था कि यह संभवतः नहीं है, लेकिन सत्यापन के लिए धन्यवाद। –

-1

-[NSDate compare:] विधि के साथ -मूल रूप से

NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSInteger desiredComponents = (NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit); 

NSDate *firstDate = ...; // one date 
NSDate *secondDate = ...; // the other date 

NSDateComponents *firstComponents = [calendar components:desiredComponents fromDate:firstDate]; 
NSDateComponents *secondComponents = [calendar components:desiredComponents fromDate:secondDate]; 

NSDate *truncatedFirst = [calendar dateFromComponents:firstComponents]; 
NSDate *truncatedSecond = [calendar dateFromComponents:secondComponents]; 

NSComparisonResult result = [truncatedFirst compare:truncatedSecond]; 
if (result == NSOrderedAscending) { 
    //firstDate is before secondDate 
} else if (result == NSOrderedDescending) { 
    //firstDate is after secondDate 
} else { 
    //firstDate is the same day/month/year as secondDate 
} 

, हम दो तिथियों करने, उनके घंटे मिनट सेकंड बिट्स बंद काटना, और उन्हें दिनांकों में वापस कर दें:

0

आईओएस 8 के बाद से आप NSCalendar की विधि का उपयोग कर सकते हैं।

इस तरह

:

NSComparisonResult comparison = [[NSCalendar currentCalendar] compareDate:date1 toDate:date2 toUnitGranularity:NSCalendarUnitDay]; 
की