2009-11-26 3 views
5

NSDateFormatter를 사용하고 있는데 문제는 일관성 문제입니다. kCFDateFormatterMediumStyle을 사용하면 시뮬레이터에서 "2009 년 11 월 26 일"형식을 제공하지만 장치에서는 "26-Nov-2009"를 제공합니다.NSDateFormatter는 장치 및 시뮬레이터에서 다른 값을 제공합니까? 해결 방법은 무엇입니까?

이제 NSFormatter를 신뢰할 수 있는지 여부를 확인하거나 Apple의 업데이트를 통해 스타일을 다시 변경할 수 있습니까?

+0

답변에서 요약 는 설정이다 : 사용자 로케일을 사용하여 (그리고, 같은, 당신에게 유용한 결과를 제공하지 않을)에 NSDateFormatter 기본값하는 동안 당신은 일관된 결과를 얻기 위해 특정 지역을 요청할 수 있습니다 NSDateFormatter의 날짜 형식이 일치하지 않는 날짜 형식 –

답변

3

NSDateFormatter는 장치의 국가 별 설정에 따라 날짜를 사용자 기본 설정으로 지정합니다. 따라서 날짜가 전 세계에 걸쳐 표시되는 방식이 다양하기 때문에이 문자열의 일관성을 기대할 수 없습니다.

날짜를 문자열로 서식 지정하는 가장 좋은 방법은 NSDateComponents를 사용하여 문자열로 변환하는 것입니다 (웹 서버에주는 등).

+3

이것은 100 % 정확하지 않습니다. NSDateFormatter는 kCFDateFormatterMediumStyle과 같은 설정을 지정할 때만 사용자의 기본 설정 (yes)으로 형식을 지정합니다. 원하는 경우 정확한 형식 문자열을 쉽게 설정할 수 있습니다. –

17

위에서 언급 한 다른 대답은 기술적으로 정확하지만 찾고있는 해결책은 아닙니다.

NSDateFormatter *frm = [[NSDateFormatter alloc] init]; 
[frm setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"]; 

NSLocale *en_US = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
[frm setLocale:en_US]; 
[en_US release]; 
관련 문제