2016-04-04 26 views
0

Ich bekomme timestamp für Server in stringFormat, die in miliseconds ist.Problem beim Parsing Zeitstempel in Datum und Uhrzeit mit Objective-C

Ich muss es in Datum und Uhrzeit konvertieren und dem Benutzer anzeigen.

Ich habe es getan folgenden Code:

+ (NSString *)getDateAndMonthFromTimeStamp:(NSString*)timestampString 
{ 
NSTimeInterval timeStamp = [timestampString integerValue]/1000; 

NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeStamp]; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 

[dateFormatter setTimeZone:[NSTimeZone defaultTimeZone]]; 

[dateFormatter setDateFormat:@"dd MMM"]; 

NSString *dateNmonth = [[dateFormatter stringFromDate:date]uppercaseString]; 

return dateNmonth; 
} 

Als ich es in iPhone6 ​​laufen funktioniert es gut. Aber wenn ich es in iPhone 5 und iPhone5s laufen lasse, zeigt es mich unerwünschtes Datum an.

debuggen ich den Code und fanden diese:

timestampString = @"1459498716000" 

    NSTimeInterval timeStamp = [timestampString integerValue]/1000; 
//after this timeStamp becomes: 
    timeStamp = 2147483; 

und dann mein Datum wird 1970-01-25 20:31:23 +0000

ich im Zweifel bin, dass NSTimeinterval mit Daten überschwemmt wird. Ist das richtig?

Wie kann ich das beheben?

+1

speichern Zeitstempel in doppelte Datentyp – iOS

+0

@DarjiJigar Doppel mein Problem nicht gelöst werden. – Dalvik

+0

Wenn Sie timstamp Daten in JSON-String erhalten, als warum Sie in ntisseinterval konvertieren – iOS

Antwort

1

versuchen diesen Code

NSString* takeOffTime = @"1396614600000"; 
double miliSec = takeOffTime.doubleValue; 
NSDate* takeOffDate = [NSDate dateWithTimeIntervalSince1970:miliSec/1000];