は一般的に、あなたはどこから来ているものロケールを知っている、とあなたはNSDateFormatterを取ると、使用して、そのロケールを設定setLocale:
を使用して、setDateStyle:
とsetTimeStyle:
を使用して日付と時刻の書式を設定し、次にdateFromString:
を使用します。あなたはロケールを知らないので、あなたはuse the UNIX functionsできることを行うことができない場合は、次の
struct tm sometime;
const char *formatString = "%a, %d %b %Y %T %z";
strptime_l("Fri, 25 Mar 2011 10:16:00 -0700", formatString, &sometime, NULL);
NSDate *newDate = [NSDate dateWithTimeIntervalSince1970: mktime(&sometime)];
次は、東部時間にNEWDATEを「変換」したいと思います。 NSDatesにはタイムゾーンに関する情報が含まれていないため、2001年1月1日以降の秒数で表されているため、「変換」と言います。変換の考え方は意味がありません。 NSDateをプリントアウトすると、UTC(+0000)で取得されますが、NSDateは他のタイムゾーンとは関係ありません。
あなたが代わりにやりたいことは、右のタイムゾーンでたDateFormatterを作成し、出力に日付を、それを使用することです:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_UK"]];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EST"]];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSLog(@"%@",[dateFormatter stringFromDate:newDate]);
// Outputs 25 Mar 2011 13:16