2012-01-05 13 views
21

पास हो गया है, मैं कैसे निर्धारित करूं कि एनएसडीएटी (समय सहित) पास हो गया है या नहीं? मुझे मूल रूप से आज की तारीख को डीबी में एक तारीख की तुलना करने की आवश्यकता है, लेकिन मैं स्टंप हो गया हूं।मैं कैसे निर्धारित करूं कि एनएसडीएटी (समय समेत)

उत्तर

86

इस प्रयास करें:

if ([someDate timeIntervalSinceNow] < 0.0) { 
    // Date has passed 
} 
+13

मैं डाल कि एक वर्ग विधि में तो आप उपयोग कर सकते हैं 'someDate.isInPast'। –

+0

आपका कोड केवल तारीख की तुलना नहीं कर रहा है। जैसे कि मैं उसी दिन की तुलना कर रहा हूं लेकिन इस तरह के अलग-अलग समय: 1/1/2015 5:00:00 और 1/1/2015 7:00:00 इस तारीख के साथ यह मुझे दिखा रहा है कि तिथि बीत चुकी है। – Daddy

+1

+ डैडी, सुनिश्चित नहीं है कि आपका क्या मतलब है। दस्तावेज़ीकरण के अनुसार यह विधि सही होनी चाहिए: "दिनांक वस्तु और वर्तमान दिनांक और समय के बीच समय अंतराल। (केवल पढ़ने के लिए) यदि दिनांक वस्तु वर्तमान दिनांक और समय से पहले है, तो इस संपत्ति का मूल्य नकारात्मक है।" –

3

आप

[NSDate date]; 

उपयोग कर सकते हैं एक NSDate वस्तु वर्तमान समय और दिनांक का प्रतिनिधित्व करने के लिए।

तो तुलना उस तारीख को आप का विश्लेषण कर रहे हैं, उदाहरण के लिए:

if ([currentDate timeIntervalSince1970] > [yourDate timeIntervalSince1970]) { 
// yourDate is in the past 
} 

आप इस किसी भी दो तिथियों तुलना करने के लिए उपयोग कर सकते हैं। उम्मीद है की यह मदद करेगा।

+1

या यह इनलाइन कार्य करें: ([[ एनएसडीएटी तिथि] समय इंटरवलवल 1 9 70]> [yourDate timeIntervalSince1970]) –

+0

मैं तारीखों की तुलना करने के लिए एक और सामान्य समाधान प्रदान कर रहा था - अब एक तारीख की तुलना करना एक विशिष्ट मामला है। अभ्यास में हालांकि, आप शायद इस विशेष परिदृश्य में समय इंटरवलसेंस नाउ का उपयोग करेंगे। –

6

आपको एनएसडीएटी तुलना का उपयोग करने की आवश्यकता है, यहां पर कई उत्तरों आपकी सहायता करेंगे।

iOS: Compare two dates

तर्क फेरबदल की आवश्यकता होगी, लेकिन यह सही दिशा में स्थापित करना चाहिए:

- (BOOL)date:(NSDate*)date isBefore:(BOOL)before otherDate:(NSDate*)otherDate ; 
{ 
    if(before && ([date compare:otherDate] == NSOrderedAscending)) 
     return YES; 
    if (!before && ([date compare:otherDate] == NSOrderedDescending)) 
     return YES; 
} 

उपयोग:

if([self date:yourDate isBefore:YES otherDate:[NSDate date]]) 
+4

कोडिंग-स्टाइल नोट पर: आपका दूसरा पैरामीटर वास्तव में कुछ है जैसे 'isBefore:' नाम दिया जाना चाहिए। जोर से पढ़ना "तिथि: एक्स है इससे पहले: हाँ/कोई अन्य दिनांक: वाई" "दिनांक: एक्स है: हाँ/कोई अन्य दिनांक: वाई" से बहुत बेहतर आईएमओ लगता है। – Taum

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