2017-07-04 4 views
0
NSString *[email protected]"2017-07-06T10:00:00"; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.dateFormat = @"yyyy-MM-ddTHH:mm:ss"; 

NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone]; 
[dateFormatter setTimeZone:destinationTimeZone]; 

NSDate *oldTime = [dateFormatter dateFromString:strUTCTime]; 

NSString *estDateString = [dateFormatter stringFromDate:oldTime]; 
NSLog(@"Local time is ===> %@",estDateString); 
+0

Sie müssen sich selbst austesten, oder zeigen Sie uns zumindest einige nützliche Ergebnisse. Zum Beispiel ist 'oldTime'' nil', deshalb ist 'estDateString' sowieso gleich Null. Ihr Problem besteht also darin, "OldTime" zu erhalten. In der Tat habe ich das 'timeZone'-Zeug entfernt, um zu prüfen, ob ich ein' NSDate' bekommen kann und nicht. Es hilft mir, zu finden, dass das Problem mit dem 'dateFormat' ist, Sie müssen das' T' "flüchten" => "dateFormatter.dateFormat = @" yyyy-MM-dd'T'HH: mm: ss ";' – Larme

+0

Ja, ich muss dem T entkommen. Danke. =====> dateFormatter.dateFormat = @ "yyyy-MM-dd'T'HH: mm: ss"; – user2964955

Antwort

1

Hier sind die folgenden funktionierenden und getesteten Code.

NSString *[email protected]"2017-07-06T10:00:00"; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss"; 
[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en-US"]]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 

NSDate *oldTime = [dateFormatter dateFromString:strUTCTime]; 

NSLog(@"UTC time is ===> %@",oldTime); 

NSTimeZone* destinationTimeZone = [NSTimeZone localTimeZone]; 
[dateFormatter setTimeZone:destinationTimeZone]; 
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; 

NSString *estDateString = [dateFormatter stringFromDate:oldTime]; 
NSLog(@"Local time is ===> %@",estDateString); 

Bitte lassen Sie mich wissen, wenn es funktioniert.

+0

Danke funktioniert wie ein Zauber. – user2964955

+0

Es funktioniert definitiv ein upvote. –