2012-06-16 14 views
20

मेरे पास निम्न कोड है।12 घंटे के मोड में NSDateFormatter

NSDateFormatter *df = ...; 
[df setTimeZone:[NSTimeZone defaultTimeZone]]; 
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"]; 
NSDate * date = [df dateFromString:date_string]; //here is the problem 

24-घंटे मोड में सबकुछ ठीक है। डिवाइस पर 12 घंटे का मोड सेट होने पर, stringFromDate शून्य लौटाता है। date_string का प्रारूप हर समय, दिनांक प्रारूप भी वही है। ऐसा क्यों होता है?

+0

करते हैं! – Dinesh

+0

2012-06-16T10: 00: 47.436 + 0000 उदाहरण के लिए – Sergey

+0

देखें [यह पोस्ट] (http://stackoverflow.com/q/6613110/581994)। –

उत्तर

30

कोशिश के लिए hh खड़ा में:

NSLocale *twelveHourLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 
df.locale = twelveHourLocale; 

24 घंटे के बजाय मजबूर करने के लिए, आप का उपयोग कर सकते हैं:

NSLocale *twentyFour = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"]; 
+0

मैं 12 घंटे के मोड को अनदेखा करने के लिए डेटफॉर्मर को मजबूर करना चाहता हूं और हर समय 24 घंटे का उपयोग करता हूं। मुझे किस पहचानकर्ता का उपयोग करना चाहिए? – Sergey

+0

en_GB -> NSLocale * formatterLocale = [[[NSLocale alloc] initWithLocaleIdentifier: @ "en_GB"] autorelease]; – aleroot

+0

शानदार! एक जादू की तरह काम करता है। – Fogmeister

49

24 घंटे के लिए अपने NSDateFormatter "yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"HH खड़ा और 12 घंटे की इस तरह से स्थान निर्धारित करने के लिए

+0

मैं 12 घंटे की सिस्टम सेटिंग्स को अनदेखा करना चाहता हूं और यह नहीं जानता कि – Sergey

+5

@ सर्गी फिर ** एचएच ** –

+1

के बजाय ** एचएच ** का उपयोग करें यदि मैं hh सेट करता हूं तो मुझे 14:55 प्राप्त होने पर यह काम नहीं करेगा – Sergey

6

12-घंटे मोड 24 घंटे मोड के लिए:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"hh:mm a"]; 
NSDate *amPmDate = [formatter dateFromString:amPmHourString]; 
[formatter setDateFormat:@"HH:mm"]; 
NSString *24HourString = [formatter stringFromDate:amPmDate]]; 

24-घंटे मोड के लिए 12 घंटे मोड के लिए बस यू DATE_STRING मूल्य प्रदर्शित कर सकते हैं विपरीत

4
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
NSLocale *locale = [[[NSLocale alloc] 
       initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]; 
[dateFormat setLocale:locale]; 
संबंधित मुद्दे