2010-02-13 12 views
11

की तुलना में मैं किसी उपयोगकर्ता को डेट पिकर के साथ भविष्य में दिनांक चुनने के लिए मजबूर करने की कोशिश कर रहा हूं। मैंने स्पष्ट रूप से तुलना का उपयोग किया: विधि, हालांकि, जब मैं निम्नलिखित कोड करता हूं, भले ही यह [NSDate दिनांक] के समान दिनांक है, तो यह बताता है कि अगर कथन निष्पादित करता है।एनएसडीएटी की तुलना [एनएसडीएटी तिथि]

if ([datePicker.date compare:[NSDate date]] == NSOrderedAscending) // If the picked date is earlier than today 
{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hmm, this date is earlier than today" 
                message:@"The date you've selected is earlier than today's date, please pick another" 
                delegate:nil 
              cancelButtonTitle:@"Okay, I'll pick another" 
              otherButtonTitles:nil]; 
    // Show the alert 
    [alert show]; 

    // Release the alert 
    [alert release]; 
} 
+3

क्या आपने तुलना करने के लिए 'laterDate:' (या 'beforeDate: ') का उपयोग करने का प्रयास किया है? – gerry3

+0

क्या होता है यदि आप तारीख को एनएसएलॉग देखते हैं कि यह सही मूल्य है या नहीं। –

उत्तर

15

मुझे आपकी समस्या का उत्तर नहीं पता है, लेकिन आप इसे कैसे रोक सकते हैं।

बस UIDatePicker की minimumDate संपत्ति का उपयोग करें, कि यहां तक ​​कि एक अधिक स्वच्छ तरीका है।

+0

यह बहुत अच्छा काम करता है, यह नहीं देखा कि यूआईडीएटपीकर के लिए एपीआई में, धन्यवाद। – skylerl

24

आप उपयोग कर सकते हैं

[datePicker.date timeIntervalSinceNow] 

जो एक NSTimeInterval (सिर्फ एक डबल के लिए एक typedef, सेकंड की इकाइयों में) जो अतीत के लिए भविष्य के लिए सकारात्मक और नकारात्मक है रिटर्न: यहाँ मेरी कोड है ।

जैसा कि दस्तावेज़ कहता है, तुलना उपसेकंद तुलना प्रदान करती है, ताकि आप इसका उपयोग पूरी दिन बाद में (भविष्य में कुछ समय के बजाय) को मजबूर करने के लिए कर सकें।

1

एक एनएसडीएटी ऑब्जेक्ट में एक तिथि और समय दोनों शामिल होते हैं, इसलिए उसी दिन के साथ कई तिथियां होती हैं जो उसी दिन किसी अन्य तारीख से पहले या बाद में गिर सकती हैं।

date क्लास विधि वर्तमान दिनांक दिन और समय के साथ एक दिनांक वस्तु देता है।

संबंधित मुद्दे