2016-08-03 20 views
-5

Ich versuche ein NSString wie dieses "2300" zu NSDate Format zu konvertieren. (Hinweis: Es gibt keinen Doppelpunkt nach 23).Convert NSString (zB: "2300") in NSDate (iOS)

Ich bekomme die Zeichenfolge von einem externen Web-Service. Ich muss diese Zeit in meiner App im 12-Stunden-Format anzeigen.

Danke :)

+0

"2300" könnte alles sein. Wollen Sie damit sagen, dass es sich um eine Uhrzeit im 24-Stunden-Format (hhmm) handelt und Sie diese in ein NSDate und dann in eine Uhrzeit im 12-Stunden-Format umwandeln möchten? –

+0

Ja .. "2300" ist eine Zeit im 24-Stunden-Format –

+0

Sie erhalten dieses Format: 11:00 PM? –

Antwort

1

Ich habe hier in drei Arten, in denen tyope Sie wählen müssen

Typ -1

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"HHmm"]; 
[formatter setTimeZone:[NSTimeZone systemTimeZone]]; 
[formatter setLocale:[NSLocale systemLocale]]; 
NSDate *date = [formatter dateFromString:@"2300"]; 
    [formatter setDateFormat:@"hh:mm"]; 
NSString *finalDate = [formatter stringFromDate:date]; 
NSLog(@"finalDate==%@",finalDate); 

Typ -2

NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init]; 
[formatter1 setDateFormat:@"HHmm"]; 
[formatter1 setTimeZone:[NSTimeZone systemTimeZone]]; 
[formatter1 setLocale:[NSLocale systemLocale]]; 
NSDate *date1 = [formatter1 dateFromString:@"2300"]; 
[formatter1 setDateFormat:@"hhmm"]; 
NSString *finalDate1 = [formatter1 stringFromDate:date1]; 
NSLog(@"finalDate1==%@",finalDate1); 

Typ e -3

NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init]; 
[formatter2 setDateFormat:@"HHmm"]; 
[formatter2 setTimeZone:[NSTimeZone systemTimeZone]]; 
[formatter2 setLocale:[NSLocale systemLocale]]; 
NSDate *date2 = [formatter1 dateFromString:@"2300"]; 
[formatter2 setDateFormat:@"hh:mm a"]; 
NSString *finalDate2 = [formatter2 stringFromDate:date2]; 
NSLog(@"finalDate2==%@",finalDate2); 

Ihr den Ausgang erhalten wie

enter image description here

+0

hast du die lösung oder nicht –

+0

Das funktioniert für mich danke dir. :) –

+0

@AbbinVarghese - willkommen –

0

Wenn ich Sie richtig verstehe die Frage, 2300 ist eigentlich 23.00 Uhr dh 23.00. So müssen Sie zuerst das Datum aus dem String erhalten, da nur so i mit den Daten denken kann Sie immer ist Substring

- (NSDate*) getDateFromweb:(NSString *)dateString 
{   
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 
    [dateFormatter setLocale:[NSLocale systemLocale]]; 
    [dateFormatter setDateFormat:@"HHmm"]; 
    NSDate *date = [dateFormatter dateFromString:dateString]; 

    [dateFormatter setDateFormat:@"hh:mm a"]; 
    NSString *pmAm = [dateFormatter stringFromDate:date]; 

    return pmAm; 
} 

hinzugefügt Systemgebietsschema und Zeitzone auf Vorschlag von abizern zu verwenden. diese wird auch nicht davon ausgehen, die Datumszeichen 4 Ziffern haben

+0

Dies setzt voraus, dass das Format immer 4 Ziffern ist. Außerdem berücksichtigen Sie keine Zeitzonen oder Gebietsschemata. – Abizern

+0

@Abizern erwarten Sie bitte keine Antwort, um 100% Testfälle zu bestehen. Es ist nur ein Sudo-Code, um die Lösung zu bekommen. es kann nach Verbrauch optimiert werden. – Bonnie

+1

Warum nicht einfach "HHmm" anstelle von "HH: mm" verwenden? –