2015-07-05 13 views
5

मैं सिर्फ समय और है कि निम्न स्ट्रिंग से बहुत में 24 घंटे के स्वरूप पाने के लिए कोशिश कर रहा हूँ:24 घंटे समय

7/2/2015 2:30:00 PM पर

यह है कि मैं क्या कोशिश की है:

-(NSString*)returnDate:(NSString*)dateString 
{ 

    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init]; 
    [dateFormatter1 setDateFormat:@"MM/dd/yyyy hh:mm:ss aaa"]; 
    NSDate *date = [dateFormatter1 dateFromString:dateString]; 

    dateString = [date descriptionWithLocale:[NSLocale systemLocale]]; 



    NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone]; 
    NSTimeZone *utcTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"]; 

    NSInteger currentGMTOffset = [currentTimeZone secondsFromGMTForDate:date]; 
    NSInteger gmtOffset = [utcTimeZone secondsFromGMTForDate:date]; 
    NSTimeInterval gmtInterval = currentGMTOffset - gmtOffset; 

    NSDate *destinationDate = [[NSDate alloc] initWithTimeInterval:gmtInterval sinceDate:date]; 

    NSDateFormatter *dateFormatters = [[NSDateFormatter alloc] init]; 
    [dateFormatters setDateFormat:@"HH:mm a"]; 
    [dateFormatters setDateStyle:NSDateFormatterShortStyle]; 
    [dateFormatters setTimeStyle:NSDateFormatterShortStyle]; 
    [dateFormatters setDoesRelativeDateFormatting:YES]; 
    [dateFormatters setTimeZone:[NSTimeZone systemTimeZone]]; 
    dateString = [dateFormatters stringFromDate: destinationDate]; 

    return dateString; 
} 

आउटपुट: 4:30

इस लौटा रहा है सही समय लेकिन 12 घंटे के प्रारूप में। मुझे 24 घंटे के प्रारूप में समय चाहिए।

वांछित उत्पादन: 16:30

+2

अनुरोध से "ए" हटाएं, जो अनुरोध कर रहा है दोपहर से पूर्व दोपहर के बाद। शॉर्ट स्टाइल और रिलेटिवडेट फॉर्मेटर कथन भी हटाएं। देखें: [आईसीयू फॉर्मेटिंग तिथियां और टाइम्स] (http://userguide.icu-project.org/formatparse/datetime) – zaph

+1

@zaph: वाओ !!! आपने जो कुछ भी सुझाया है उसे बस बदल दिया। यह पूरी तरह से काम किया। – Nitish

+0

मेरा उत्तर देखें, देखें कि यह आपके लिए काम करता है या नहीं। – zaph

उत्तर

4

वहाँ सवाल में बहुत कोड के लिए रास्ता है, इस प्रयास करें:

NSString *dateString = @"7/2/2015 4:30:00 PM"; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 

[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss aaa"]; 
NSDate *date = [dateFormatter dateFromString:dateString]; 

[dateFormatter setDateFormat:@"HH:mm"]; 
dateString = [dateFormatter stringFromDate: date]; 

NSLog(@"dateString: %@", dateString); 

आउटपुट:

डेटस्ट्रिंग: 16:30

+1

बिल्कुल मुझे क्या चाहिए। – Nitish

+2

डिवाइस पर उपयोगकर्ता की 24-घंटे की समय सेटिंग के कारण आपको समस्याओं से बचने के लिए आपको 'en_US_POSIX' के विशेष लोकेल का भी उपयोग करने की आवश्यकता है। – rmaddy

+0

@zaph: मुझे एक चीज़ मिली। यह ठीक काम करता है जब आईफोन की सेटिंग 12 घंटे पर सेट की गई है, लेकिन जब इसे 24 घंटे के प्रारूप में बदल दिया जाता है, तो मुझे तिथि 00:00 के रूप में मिलती है। कोई उपाय ? – Nitish

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