2017-06-07 1 views
0

In meiner Anwendung verwende ich eine Funktion, um das Datumsformat zu ändern, um auch das/mit - und Datumsformat zu ersetzen.iOS: Objective-C: Ausgabeproblem aufgrund der iPad-Zeitanzeige 12 Stunden/24 Stunden

Wenn Gerät auf 12 Stunden eingestellt ist, funktioniert alles einwandfrei. Aber wenn ich es auf 24 Stunden setze, gibt es einen falschen Wert zurück.

NSDate *newdate = [self convertDateSlashToDash:[obj valueForKey:@"TaskStartDateTime"]]); 


//input date is : 6/6/2017 6:38:00 PM 
-(NSDate *)convertDateSlashToDash:(NSString *)dateStr{ 

if ([dateStr isKindOfClass:[NSDate class]]) { 
    return (NSDate*)dateStr; 
} 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
//Set the AM and PM symbols 
[dateFormatter setAMSymbol:@"AM"]; 
[dateFormatter setPMSymbol:@"PM"]; 
//Specify only 1 M for month, 1 d for day and 1 h for hour 
[dateFormatter setDateFormat:@"M/d/yyyy h:mm:ss a"]; 

// in ms 1469077819000 without ms 1469077819 for 7/21/2016 5:10:19 AM 
NSTimeInterval ti = [[dateFormatter dateFromString:dateStr] timeIntervalSince1970]; 
NSDate *date = [NSDate dateWithTimeIntervalSince1970:ti]; 
NSDateFormatter *formatter= [[NSDateFormatter alloc] init]; 

// [formatter setLocale:[NSLocale currentLocale]]; 

[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss aa"]; 
NSString *dateString = [formatter stringFromDate:date]; 
NSDate *parsedDate = [formatter dateFromString:dateString]; 

return dateString; 
} 
//output of this is (24hrs): 1970-01-01 05:30:00AM 

//output of this is (12hrs): 2017-06-06 06:38:00 PM 

Warum funktioniert es nicht? Bitte vorschlagen.

Vielen Dank.

+0

Sie Rückkehr 'dateString' sind? –

+0

ja, ich brauchte das –

+0

es ist falscher Wert, ich denke, es ist 'analysedDate' –

Antwort

0

Die 12-Stunden- und 24-Stunden-Daten werden bei Datumsformatierern unterschiedlich angegeben. Stellen Sie sicher, dass Sie das richtige Format verwenden. Ich sehe, Sie verwenden h für die Stunde zusammen mit a am Ende, die den Formatierer zu einem 12-Stunden-Format konfiguriert. Für ein 24-Stunden-Format benötigen Sie je nach Bedarf H oder HH. Sie können auf diese link beziehen ein besseres Verständnis der verschiedenen Formaten, um Ihren Code

+0

Ja, aber in meinem Code ist das Eingabedatum immer im 12-Stunden-Format, und ich versuche, dieses Datum zu umgehen. –

Verwandte Themen