के दौरान है जब मेरा ऐप लॉन्च किया गया है, तो मैं यह जांचना चाहता हूं कि दिनांक 9: 00-18: 00 के बीच है या नहीं।यह जांचने के लिए कि दिनांक अब 9: 00-18: 00
और अब मैं NSDate
का उपयोग कर समय प्राप्त कर सकता हूं। मैं समय की जांच कैसे कर सकता हूं?
के दौरान है जब मेरा ऐप लॉन्च किया गया है, तो मैं यह जांचना चाहता हूं कि दिनांक 9: 00-18: 00 के बीच है या नहीं।यह जांचने के लिए कि दिनांक अब 9: 00-18: 00
और अब मैं NSDate
का उपयोग कर समय प्राप्त कर सकता हूं। मैं समय की जांच कैसे कर सकता हूं?
इतने सारे जवाब और इतने सारे दोषों ...
आप में NSDateFormatter
उपयोग कर सकते हैं किसी तारीख से उपयोगकर्ता के अनुकूल स्ट्रिंग प्राप्त करने के लिए आदेश। लेकिन यह बहुत तारीख तुलना के लिए उस स्ट्रिंग का उपयोग करने के लिए बुरा विचार है! आप एक तिथि के वर्ष, माह, दिन, घंटे, मिनट, आदि के बारे में जानकारी प्राप्त करना चाहते हैं
कृपया अपने प्रश्न है कि तार का उपयोग करना शामिल ...
के लिए किसी भी सवाल का जवाब उपेक्षा, आप NSCalendar
और NSDateComponents
उपयोग करना चाहिए।
आदेश है कि क्या एक तारीख है 9:00 और 18:00 बजे के बीच आप निम्न कर सकते जाँच करने के लिए:
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComponents = [calendar components:NSHourCalendarUnit fromDate:date];
if (dateComponents.hour >= 9 && dateComponents.hour < 18) {
NSLog(@"Date is between 9:00 and 18:00.");
}
संपादित करें:
ओह, dateComponents.hour <= 18
का उपयोग कर दिनांकों गलत परिणाम में परिणाम होगा 18:01 की तरह dateComponents.hour < 18
जाने का रास्ता है। ;)
09:00 के लिए निर्माण दिनांक और 18:00 आज और उन तारीखों के साथ वर्तमान समय की तुलना:
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *now = [NSDate date];
NSDateComponents *components = [cal components:NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:now];
[components setHour:9];
[components setMinute:0];
[components setSecond:0];
NSDate *nineHundred = [cal dateFromComponents:components];
[components setHour:18];
NSDate *eighteenHundred = [cal dateFromComponents:components];
if ([nineHundred compare:now] != NSOrderedDescending &&
[eighteenHundred compare:now] != NSOrderedAscending)
{
NSLog(@"Date is between 09:00 and 18:00");
}
हाय दोस्तों, आपके तरीकों के लिए धन्यवाद, मैं समझता हूं कि आपका क्या मतलब है, लेकिन नौ सौ और अठारह सौ शून्य है, मुझे लगता है कि मैं बग ठीक कर सकता हूं, आपकी विधि – Relex
@ रिलेक्स के लिए धन्यवाद और फिक्स की आवश्यकता क्या है? कृपया मेरा उत्तर अपडेट करें क्योंकि तुलना के लिए जरूरी तिथियां बनाने का यह सबसे अच्छा तरीका है। – trojanfoe
धन्यवाद! यह एकमात्र उत्तर है जो तुलना करने के लिए 'NSCalendar' का उपयोग कर रहा है। अभी भी आशा है। तुलना के लिए दो तिथियों का निर्माण आवश्यक नहीं है, हालांकि। आप जांच सकते हैं कि घटक की 'घंटा' संपत्ति 9 से 18 के बीच है या नहीं। इसके अलावा, सप्ताह, सप्ताहांत, टाइमज़ोन कैलेंडर इकाइयों की आवश्यकता नहीं है। –
यह जांचने के लिए कि दिनांक दो अन्य तिथियों के बीच है या नहीं, लिंक देखें: http://stackoverflow.com/a/1072993/2092007 –
@kshin धन्यवाद आपके लिंक के लिए, यह एक अलग है, क्योंकि यह निश्चित नहीं है दिन या महीना, यह "आज" 9: 00-18: 00 – Relex
है, यह हमेशा दुनिया में कहीं 9:00 और 18:00 के बीच रहता है। :) – nickgrim