개발자의 길

[Java, Android] Date, Calendar 클래스를 이용해 시간 표현하기

토아드 2018. 9. 2. 00:09
반응형

안드로이드 앱 개발을 하면서 날짜를 가져와서 사용해야 할 때가 꽤 있는데, 매번 사용할때마다 사용방법을 까먹어서 계속 다시 찾게 되다 보니 이제는 외워야 겠다 생각이 들어 포스팅을 하게 됬다.


Java에서는 Date, Calendar, SimpleDateFormat 등의 클래스를 제공해서 날짜 정보를 관리할 수 있게 하는데, 이 포스트에서는 이 세가지 클래스들만을 이용해서 날짜정보를 다루는 방법을 알아보겠다.


Date

 날짜 정보를 저장하는 자료구조로써 년, 월, 일, 시, 분, 초 등의 정보를 저장할 수 있다. Calendar 클래스에서 getTime() 메소드를 통해 Calendar 클래스에 세팅되어있는 시간정보를 얻을 수 있는데 이때 Date 타입으로 리턴을 해준다.

 또 나중에 쓰게 될 SimpleDateFormat 의 format(Date date) 메소드의 인자로 사용되기도 한다.

 원래는 주로 사용되었던 클래스이지만 JDK가 업데이트 되면서 Calendar 클래스를 주로 쓰게 되었고 Date 클래스의 메소들이 많이 사라졌다고 들었다. 그래서 Calendar 클래스를 쓰는 편이 좋다고.

 new Date() 생성자로 생성할 시 현재 시간을 리턴한다고 한다.

Calendar (GregorianCalendar)


 static Calendar.getInstance() : 현재시간을 담고있는 Calendar 객체를 리턴

 ex) Calendar cal = Calendar.getInstance(); 


 Date getTime() : calendar 객체가 저장하고 있는 시간을 Date 형태로 리턴

 ex) Date nowDate = cal.getTime();


 GregorianCalendar : Calendar의 서브클래스로 이 클래스의 생성자를 호출함으로써 Calendar에 특정 시간값을 가진 객체를 저장할 수 있다.

 ex)

 new GregorianCalendar(2017,8,15) : 2017년 8월 15일 리턴

 new GregorianCalendar(Locale.KOREA) : 한국표준시 리턴

 new GregorianCalendar() : 현재시간 리턴


SimpleDateFormat


 사용자(개발자)가 개발을 할 때 그때마다 원하는 시간 포맷이 있다

 yyyy-MM-dd 라던가 yyyy년MM월dd일 와 같이 원하는 형태로 이용하고 싶을 때가 있는데 그때 쓰는것이 이 SimpleDateFormat이다. 이 클래스는 시간을 담는 클래스라기 보다 시간포맷을 담는 클래스라고 이해하면 된다.


 SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd") : 스트링 객체에 해당하는 포맷의 객체 생성

 

 String format(Date date) : Date date를 SimpleDateFormat 객체의 포맷에 맞게 변형해 String으로 리턴

 ex) String nowDay = dateformat.format(nowDate);

 

 Date parse(String date) : String date를 SimpleDateFormat 객체의 포맷에 맞게 변형해 Date로 리턴

 ex) Date someDay = dateformat.parse("2017-08-05"); //이때 넣는 Stringd은 해당 dateformat의 포맷과 같아야 된다.


그럼 간단하게 오늘 날짜에 해당하는 String 객체를 얻고 싶다면? 다음과 하면 된다


1
2
3
4
 Calendar cal = Calendar.getInstance();
 Date nowDate = cal.getTime();
 SimpleDateFormat dataformat = new SimpleDateFormat("yyyy년 MM월 dd일");
 String toDay = dataformat.format(nowDate);
cs


반응형