2013 이전/iOS개발

[iOS 개발] 지역에 맞게 날짜 표기 하기

하구루 2017. 2. 25. 16:26

글로벌하게 앱을 배포하려 하다 보면 날짜 형식을 표시하는데 문제가 생긴다.


일반적으로 우리나라의 표기 방식은

"2012년 10월 5일 금요일" 이런식으로 표시 된다.

하지만 미국의 경우는

"Friday October 5, 2012" 로 표기 순서와 방식이 다르다

그외에 또 다른 나라는 그 나라만의 표기 방식이 있다.

하지만 이를 지원하기 위해 모든 지역의 표기 방식을 찾아서 따로 처리 할 수는 없는 노릇이다.


다행이도 이를 쉽게 적용할 수 있는 method가 존재한다.

위와 같이 날짜를 표기 할때 NSDateFomatter를 사용하게 될 것이다.

기본적인 사용법은 따로 언급하지 않겠다.

한국의 표기 법대로 위의 경우라면

"yyyy MMMM d EEEE" 정도가 될 것이다.
이것을 현재 디바이스에 설정된 지역의 표기 방식으로 한방에 변환 시켜주는 함수가 있다.

간단한 예제를 보여 주겠다.
   NSString *dateFormatString = @"yyyy MMMM d EEEE";
    dateFormatString = [NSDateFormatter dateFormatFromTemplate:dateFormatString options:0 locale:[NSLocale currentLocale]];
    
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:dateFormatString];
    
    NSLog(@"%@", [dateFormat stringFromDate:[NSDate date]]);
위 예제를 수행하게 되면 위에 언급했던 방식으로

한국은 "2012년 10월 5일 금요일" 미국은 "Friday October 5, 2012"로 표시 된다.

위에서 보는것처럼 우리나라의 표시 방식으로 포멧을 스트링으로 만들고 이것을 아래 메소드를 통해서

만든 포멧 스트링과 현재 로케일 정보를 넣어 주면 해당 지역에 맞는 포멧 스트링을 리턴해 준다

dateFormatFromTemplate:dateFormatString:options:locale:

미국의 경우 "EEEE, MMMM d, yyyy"로 변환이 되고한국의 경우 "yyyy년 MMMM d일 EEEE"으로 변환이 된다.

미국의 경우 순서가 바뀌었고,

한국의 경우 "년" "일" 이라는 포멧을 넣지 않았지만 우리나라에 맞춰서 들어가는것을 알 수 있다.
("월"은 EEEE포멧일경우 자동으로 들어 간다)

이것을 이용하면 글로벌하게 배포될 앱의 날짜 포멧의 문제는 한방에 해결되게 된다.

참고로 위 메소드에 현재 로케일은 아래 그림에 표시된 부분의 설정에 따르게 된다. 


 .     


반응형