Day 16. 자바에서 시간 다루기

ho_c·2022년 3월 9일
0

국비교육

목록 보기
16/71
post-thumbnail
post-custom-banner

요즘 자바 고급으로 넘어가면서, 나 포함 함께 공부하는 분들 모두 어려워하는 것 같았다.
그래서 강사님이 진도를 더 안 나가시고 OOP의 문법과 MV를 바탕으로 실습을 더 하셨다.

다만 오늘은 ‘날짜, 시간 관련 데이터’까지 다루는 걸 포함해서 실습 문제가 나왔다.

Time stamp

날짜나, 시간 등을 표현하기 위해 각 프로그래밍 언어마다 만들어진 기능을 ‘Time Stamp’ 라고 하고 long 으로 반환한다.

구체적으로 1970년 1월 1일을 기준으로 현재까지 흐른 시간을 초 단위로 반환하는 것이다.
자바에서는 다음과 같은 방법으로 꺼내온다.

long currentTime = System.currentTimemillis();

말 그대로 millis의 범위까지 표현해서 반환받은 값의 뒤 3자리는 0.1초, 0.01초, 0.001초를 표현한다.

근데 ‘초’로 표현된 값을 우리가 쉽게 날짜로 응용할 순 없다.
이를 위해선 클래스를 이용하여 우리가 원하는 형태로 변환시켜야 한다.
자바에서는 SimpleDateFormat 클래스를 사용한다.

SimpleDateFormat sdf = new SimpleDateFormat();

이때 생성자에 String 으로 날짜의 형태를 지정해줘야 한다.

{ y / M / D / h / m /s }
“yyyy년 MM월 dd일 hh시 mm분 ss초”

문자열 구조를 생성자에 인자값으로 넣어주고 .format 메서드를 이용해서 현재 시간을 long 값으로 넘겨준다.

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy년 MM월 dd일 hh시 mm분 ss초”);
String dayFormat = sdf.format(currentTime);
System.println(dayFormat);

여기서 추가적인 표기방식으로 다음 규칙이 있다.

  • hh : 12시간 기준
  • HH : 24시간 기준
  • E : 요일

하지만, 우리는 반대의 상황도 할 줄 알아야 한다.
즉, 정해진 날짜를 초 단위로 변환시킬 줄 알아야 한다.

“2025년 12월 25일” 이라는 문자열이 주어졌다. 이를 시간으로 바꾸면 과연 몇 초일까?

① 해당 양식과 똑같은 SimpleDateFormat 인스턴스를 하나 만들어 준다.

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy년 MM월 dd일”);

② 문자열의 값을 Date 클래스로 반환 받는다. 이때, util의 Date 클래스를 import 해야한다.

import java.util.Date;

SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일");
		String a = "2025년 12월 25일";		
		Date b = sdf.parse(a);

③ date의 getTime()로 long 값을 반환받는다.

b.getTime()
sdf.parse(a).getTime();

System.out.println(sdf.parse(a).getTime());
profile
기록을 쌓아갑니다.
post-custom-banner

0개의 댓글