2009-12-31 12 views
7

के बीच एनएसडीएटी मुझे यह जानने के लिए एक तरीका बनाने में दिलचस्पी है कि वर्तमान दिनांक किसी भी दिन किसी निश्चित समय के बीच आता है या नहीं। यह शेड्यूलिंग प्रोग्राम के लिए है, इसलिए मैं यह जानना चाहता हूं कि वर्तमान समय में कौन सी घटना हो रही है। हर दिन एक ही समय का सेट होता है: 820-900, 900-940, 940-1020, आदि। चूंकि यह किसी भी दिन किया जाना चाहिए, मुझे नहीं पता कि एक निश्चित समय के साथ एनएसडीएट कैसे बनाया जाए। मुझे लगता है कि यह एनएसटीइम इंटरवल के साथ किया जा सकता है लेकिन मुझे यकीन नहीं है कि इसे कैसे चालू किया जाए।दो दिए गए एनएसडीएटी

उत्तर

26

यह सही नहीं है, लेकिन आप इस्तेमाल कर सकते हैं [NSDate तुलना:]:

NSDate *firstDate = ... 
NSDate *secondDate = ... 

NSDate *myDate = [NSDate date]; 

switch ([myDate compare:firstDate]) { 
    case NSOrderedAscending: 
     NSLog(@"myDate is older"); 
     // do something 
     break; 
    case NSOrderedSame: 
     NSLog(@"myDate is the same as firstDate"); 
     // do something 
     break; 
    case NSOrderedDescending: 
     NSLog(@"myDate is more recent"); 
     // do something 
     break; 
} 

switch ([myDate compare:secondDate]) { 
    case NSOrderedAscending: 
     NSLog(@"myDate is older"); 
     // do something 
     break; 
    case NSOrderedSame: 
     NSLog(@"myDate is the same as secondDate"); 
     // do something 
     break; 
    case NSOrderedDescending: 
     NSLog(@"myDate is more recent"); 
     // do something 
     break; 
} 

या अधिक संक्षेप में:

BOOL between = NO; 

if (([myDate compare:firstDate] == NSOrderedDescending) && 
    ([myDate compare:secondDate] == NSOrderedAscending)) { 

    between = YES; 
} 

मैं वहाँ यकीन है कि दोनों सीमाओं के खिलाफ अपने तारीख की जाँच करने के जटिल तिथि तुलना करने का एक बेहतर तरीका है, लेकिन यह काम करना चाहिए।

4

पर एक नज़र डालें - [एनएससीएंडेंडर घटक: सेडेट:]। यह आपको अपने विभिन्न घटकों में एक तिथि को 'विघटित' करने देगा, और फिर आप इस उदाहरण में, घंटे और मिनट देख सकते हैं।

11

ऐसा करने का सबसे आसान तरीका -timeIntervalSinceReferenceDate का उपयोग करना होगा ताकि आपकी प्रत्येक तिथियां NSTimeInterval टाइप किए गए मान में बदल सकें, जो वास्तव में केवल double है।

NSTimeInterval rightNow = [[NSDate date] timeIntervalSinceReferenceDate]; 

वहां से, यह निर्धारित करना कि किसी भी दो तिथियों के बीच की तारीख सरल संख्यात्मक तुलनाओं का मामला है।

यदि आपको किसी समय की एक स्ट्रिंग प्रस्तुति से एनएसडीएटी उदाहरण में कनवर्ट करने की आवश्यकता है, तो एक समय अंतराल पुनर्प्राप्त करने के लिए, NSDateFormatter का उपयोग करें।

यदि आपको ज्ञात दिनांक घटकों से कोई तिथि बनाने की आवश्यकता है, तो NSCalendar का उपयोग करें। (यानी आप जानते हैं कि वर्ष 2010 है, महीने 4 है और दिन 12 है, आप एनएससीएंडर के घटकों का उपयोग -dateFromComponents: विधि के माध्यम से एनएसडीएटी उदाहरण उत्पन्न करने के लिए कर सकते हैं।)।

के रूप में बेन संकेत दिया, NSCalendar के घटक इंटरफ़ेस भी घंटे & मिनट बाहर suss अगर यह (एक श्रेणी में है जो उचित रूप में है कि सबसे घटनाओं हर दिन नहीं होता है में एक असामान्य उपयोग होगा निर्धारित करने के लिए इस्तेमाल किया जा सकता एक ही समय में ... लेकिन ... यकीन है ... ऐसा करने के कारण भी हैं!)

+0

कोई उदाहरण नहीं। :(:( – bluefloyd8

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