개발자 블로그

안드로이드 포맷 적용하여 날짜 가져오기(다국어지원) 본문

프로그래밍/안드로이드

안드로이드 포맷 적용하여 날짜 가져오기(다국어지원)

로이드.Roid 2016. 5. 14. 22:36

안드로이드에서 날짜를 출력하는 경우 "yyyy", "MM", "dd" 같은 포맷 지정문자를 이용해서 원하는 형식으로 날짜를 가져올 수 있다. (날짜 포맷 지정 문자에 대한 자세한 내용은 여기를 참조)

사용자에게 보여지지 않고 내부적으로 사용하거나 특정 국가 한정으로 개발하는 앱이라면 위 형식으로도 충분하지만 "다국어지원"을 염두해 둔다면 결코 좋은 방법이 아니다. 한국에서는 "년-월-일" 순서의 날짜표기를 사용하지만, 미국의 경우에는 "월-일-년"으로 출력하는 순서가 서로 다르다. 로케일로 구분해서 포맷을 달리 적용해서 해결 할 수도 있겠지만 아래 코드를 이용하면 매우 깔끔하게 해결이 가능하다. 

Calendar cal = Calendar.getInstance(); // the value to be formatted
DateFormat formatter1 = DateFormat.getDateInstance(DateFormat.DEFAULT);
DateFormat formatter2 = DateFormat.getDateInstance(DateFormat.SHORT);
DateFormat formatter3 = DateFormat.getDateInstance(DateFormat.MEDIUM);
DateFormat formatter4 = DateFormat.getDateInstance(DateFormat.LONG);
DateFormat formatter5 = DateFormat.getDateInstance(DateFormat.FULL);

formatter1.setTimeZone(cal.getTimeZone());
formatter2.setTimeZone(cal.getTimeZone());
formatter3.setTimeZone(cal.getTimeZone());
formatter4.setTimeZone(cal.getTimeZone());
formatter5.setTimeZone(cal.getTimeZone());

String formatted1 = formatter1.format(cal.getTime());
String formatted2 = formatter2.format(cal.getTime());
String formatted3 = formatter3.format(cal.getTime());
String formatted4 = formatter4.format(cal.getTime());
String formatted5 = formatter5.format(cal.getTime());
String tot_str = formatted1 + "\n" + formatted2 + "\n" + formatted3 + "\n" + formatted4 + "\n" + formatted5;

Toast.makeText(this, tot_str, Toast.LENGTH_LONG).show();

다양한 형식으로 보여주고자 코드가 좀 길어졌는데 실제로는 매우 짧은 코드다.


언어 설정을 '한국어'로 해놓은 상태로 출력한 결과다.


언어 설정을 영어(미국)으로 변경한 뒤 출력한 결과다.

소스코드의 변경 없이도 해당 국가에 따라 적합한 형식으로 날짜를 보여준다.



※ 참고자료 : http://stackoverflow.com/questions/10771279/formatting-a-calendar-date

Comments