2009-07-07 12 views
6

मैं आज की तारीख कोड मैं के रूप में इस्तेमाल देकर अगले दिन ले जाना चाहते हैं इस प्रकार कैसे वेतन वृद्धि करतेमैं ऑब्जेक्टिव-सी में एक NSDate वस्तु

+(NSDate *)getForDays:(int)days fromDate:(NSDate *) date { 
    NSTimeInterval secondsPerDay = 24 * 60 * 60 * days; 
     return [date addTimeInterval:secondsPerDay]; 
} 

इस ठीक काम करता है, लेकिन जब दिन के उजाले की बचत यह सक्षम त्रुटियों की ओर जाता है। डेलाइट सेविंग सक्षम होने पर मैं यह काम कैसे कर सकता हूं।

+0

आप भाषा का प्रयोग कर रहे निर्दिष्ट कर सकते हैं:

इसके बजाय, NSCalendar और NSDateComponents जो वास्तव में इस के लिए डिजाइन किए गए थे का उपयोग करें। यह उत्तर देने पर लोगों की मदद करेगा। – ChrisF

+0

आपको या तो प्रति दिन 'सेकंड का नाम बदलना चाहिए या इसे स्थिर में बदलना चाहिए और '* दिन' भाग को छोड़ना चाहिए। यह किसी भी भाषा में अच्छा अभ्यास है। –

उत्तर

13

जैसा कि आपने पाया है, अब आपके पास क्या है जो बहुत ही त्रुटि-प्रवण है। न केवल यह डेलाइट बचत परिवर्तन पर जा सकता है, बल्कि यह भी होगा कि क्या आपके उपयोगकर्ता के पास गैर-ग्रेगोरियन कैलेंडर है? फिर, दिन 24 घंटे लंबे नहीं हैं।

+ (NSDate *)getForDays:(int)days fromDate:(NSDate *)date 
{ 
    NSDateComponents *components= [[NSDateComponents alloc] init]; 
    [components setDay:days]; 

    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    return [calendar dateByAddingComponents:components toDate:date options:0]; 
} 
-1

मुझे नहीं पता कि आप किस भाषा या प्रणाली का उपयोग कर रहे हैं, लेकिन मेरी सलाह यूटीसी के रूप में समय का उपयोग करके आपकी सभी गणनाओं को करने के लिए होगी और जब आप इसे प्रदर्शित करने के लिए स्थानीय समय का उपयोग करेंगे।

अधिकांश ऑपरेटिंग सिस्टम और भाषाएं स्थानीय समय पर यूटीसी के रूपांतरण पर टाइमज़ोन और डेलाइट सेविंग में कारक होंगी।

1

calculations like this प्रदर्शन करने के लिए NSCalendar का उपयोग करें। न केवल काम करने की अधिक संभावना है, लेकिन आपका कोड स्पष्ट होगा।

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