サーバーから次の日付を取得していますstring
です。NSDateformatterのタイムゾーンが間違っています
"Fri, 09 Sep 2016 16:50:40 GMT"
私はこれがtimezone
私の地元に変換したい、と私はそれを行うには、この方法があります:
-(NSString *)convertDatetoLocalTimeZone:(NSString *)dateString {
NSDateFormatter *serverFormatter = [[NSDateFormatter alloc] init];
[serverFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[serverFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzz"];
NSDate *expDate = [serverFormatter dateFromString:dateString];
NSDateFormatter *userFormatter = [[NSDateFormatter alloc] init];
[userFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzz"];
[userFormatter setTimeZone:[NSTimeZone systemTimeZone]];
return [userFormatter stringFromDate:expDate];
}
を、今変換された日付は、次のとおりです。
"Fri, 09 Sep 2016 12:50:40 EDT"
として、これは文字列です。NSDate
(OfCourseと同じタイムゾーン)に変換します。変換されたNSDate
には、EDT
のタイムゾーンが表示されます。ここで
は、私は戻ってNSDate
に文字列を変換しなければならないものである:
-(NSDate *)getDateFromString:(NSString*)dateString{
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzz"];
[df setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EDT"]]; //I also tried [NSTimeZone systemTimeZone]
return [df dateFromString:dateString];
}
返される日付は次のとおりです。
2016-09-09 16:50:40 +0000 //this is in UTC
私もen_US
私にロケールを設定することで、試してみました私がタイムゾーンをに設定しても、日付フォーマッタがEDT
をUTC
に変換するのはなぜですか?