2011-05-01 5 views
0

모두 안녕하십니까, NSDateFormatter를 사용하여 다음 형식을 새 형식으로 변환해야합니다. 나는 이것에 상당히 노련 해졌지만 어떤 이유로이 foramt에 대한 올바른 형식 정보를 기억할 수 없다 :1 시간대의 NSString 날짜를 다른 시간대의 NSDate 객체로 변환

'Fri, 25 Mar 2011 10:16:00 -0700'.

'aaa, dd bbb YYYY HH : MM : SS ZHHMM'형식을 사용해 보았지만 작동하지 않습니다. 이전 날짜 방식을 사용합니다.

새 날짜를 만들 때 동부 표준시로 변환해야합니다. 그것은 '+0000'이라고 말하지만 그게 표준화 된 것은 무엇입니까?

어떤 도움, 감사합니다, ~ 아라 쉬 당신이 그와 같은 날짜 문자열을 받고있을 때

답변

1

는 일반적으로, 당신은 그들이에서오고있어 무엇 로케일 알고, 당신은 NSDateFormatter를 취할 것, 사용하여 로케일을 설정 평가 setLocale:, setDateStyle:setTimeStyle:을 사용하여 날짜 및 시간 형식을 설정 한 다음 dateFromString:을 사용하십시오.

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을 "변환"할 : 당신은 당신이,이 다음 use the UNIX functions 수있는 로케일을 모르기 때문에 그렇게 할 수 없습니다. 나는 NSDates가 2001 년 1 월 1 일 이후에 초 단위로 표현 된 시간대에 관한 정보를 포함하고 있지 않기 때문에 "변환"이라고 말합니다. 그래서 변환에 대한 아이디어는 의미가 없습니다. NSDate를 인쇄 할 때 UTC (+0000)로 표시되지만 NSDate는 다른 어떤 것보다 해당 시간대와 더 이상 관련이 없습니다.

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 
:

은 당신이 대신하고 싶은 올바른 시간대와 dateFormatter를 작성하고 출력에 날짜를 사용하는 것입니다

관련 문제