본문 바로가기
안드로이드 자바

[Android][Java] TimeZone별 시간 가져오기

by teamnova 2023. 4. 6.
728x90

안녕하세요, 오늘은 안드로이드에서 Java 언어를 사용해 TimeZone 별 현재 시간을 가져오는 방법에 대해 알아보겠습니다

 

먼저 사용할 레이아웃 뷰와 TimeZone ID 배열 등을 초기화 해줍니다

	// 아이템 클릭 시 현재 시간을 표시할 텍스트뷰
        TextView current_time = findViewById(R.id.textView);

        // 타임존 시간을 원하는 형식으로 변경해줄 DateFormat 객체 변수 생성
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");

        // 스피너 목록에 넣을 타임존 ID 배열
        String[] items_timeZone = {"Asia/Seoul", "America/Los_Angeles", "Europe/London", "Africa/Algiers", "Indian/Comoro", "Asia/Hong_Kong"};

        // 스피너 객체 변수 만들어서 레이아웃에 스피너 뷰 참조
        Spinner spinner_timeZone  = (Spinner) findViewById(R.id.spinner);

 

그 다음 TimeZone ID 목록을 확인할 수 있는 Spinner 목록을 설정합니다

	// 아이템 목록을 관리하는 어댑터 객체 생성
        ArrayAdapter<String> adapter_spinner = new ArrayAdapter<String>(
                // 매개변수 : Context, int(안드로이드에서 제공하는 기본 레이아웃 리소스 사용), 배열(스피너 목록에서 사용할 아이템 배열)
                this, android.R.layout.simple_spinner_item, items_timeZone
        );
        
        // 안드로이드에서 제공하는 기본 레이아웃 리소스 사용
        adapter_spinner.setDropDownViewResource(android.R.layout.simple_spinner_item);
        // 스피너 객체에 만든 어댑터 설정
        spinner_timeZone.setAdapter(adapter_spinner);

 

이제 스피너 목록에서 아이템을 선택했을 때 호출되는 메소드를 이용해 현재 선택한 TimeZone의 시간을 표시하게 만듭니다.

spinner_timeZone.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){

            // 스피너 목록에서 아이템을 선택했을 경우 호출되는 메소드 설정
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                // 타임존을 저장할 타임존 객체 변수 선언 (java.util.TimeZone)
                TimeZone tz;
                // 타임존 객체에 선택된 타임존 설정
                tz = TimeZone.getTimeZone(items_timeZone[position]);
                // DateFormat 객체에 타임존 객체 설정
                dateFormat.setTimeZone(tz);

                // 현재 시간을 받아올 Date 객체 생성
                Date date = new Date();

                // 받아온 현재 시간을 DateFormat 객체에 설정된 타임존 시간으로 변경 후
                // 텍스트 뷰에 표시
                current_time.setText(dateFormat.format(date));
            }

            // 아무것도 선택하지 않았을 때 호출되는 메소드 설정
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                current_time.setText("아이템 없음");
            }
        });

 

결과 영상입니다