[시간] Date, SimpleDateFormat, 이클립스

포키·2022년 12월 5일
0

국비과정

목록 보기
37/73

Date 클래스

  • 객체가 만들어질 때 현재 시간(데이터 단위 long)을 ms(밀리초) 단위로 저장 (1970.01.01 AM 09:00:00 기준)
    (The class Date represents a specific instantin time, with millisecond precision.)
  • getTime() : 저장된 시간을 반환 (ms 단위 숫자)
  • setTime(long date) : 주어진 시간으로 저장된 값을 변경 (ms 단위 숫자)

SimpleDateFormat 클래스

  • 데이터 형식(시간)을 지정 (시간(Date) <-> 시간(String))
    (SimpleDateFormat is a concrete class for formatting and parsing dates in a locale-sensitive manner. It allows for formatting(date → text), parsing (text → date), and normalization.)
  • format(Date date) : 주어진 형식대로 시간(Date)을 시간(String)으로 변환
  • parse(String date) : 주어진 형식으로 들어온 시간(String)을 시간(Date)으로 변환
  • parse() 메서드를 사용할 때는 예외처리를 반드시 해주어야 한다.
    (* ParseException: parsing 과정에서 발생할 수 있는 예외 = 체크예외)

import java.text.*;
import java.util.*;
class TimeFormatting {
	public static void main(String[] args) {
		Date d = new Date();
		System.out.println(d.getTime());
		d.setTime(0);
		System.out.println(d.getTime());
		// <Date 클래스>
		// 객체가 만들어질 때 현재 시간(데이터 단위 long)을 ms(밀리초) 단위로 저장 (1970.01.01 AM 09:00:00 기준)
		// getTime() : 저장된 시간을 반환 (ms 단위 숫자)
		// setTime(long date) : 주어진 시간으로 저장된 값을 변경 (ms 단위 숫자)

		// 2022.12.05 오전 09:23:55
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd aa hh:mm:ss");
		String strDate = sdf.format(d);
		System.out.println(strDate);
		
		try {
			String myDate = "2002.10.05 오후 09:30:15";
			Date someday = sdf.parse(myDate);
			System.out.println(someday.getTime());
		} catch(ParseException e) {
			e.printStackTrace();
		}
		// <SimpleDateFormat 클래스>
		// 데이터 형식(시간)을 지정 (시간(Date) <-> 시간(String))
		// format(Date date) : 주어진 형식대로 시간(Date)을 시간(String)으로 변환
		// parse(String date) : 주어진 형식대로 들어온 시간(String)을 시간(Date)으로 변환
		// parse() 메서드를 사용할 때는 예외처리를 반드시 해주어야 한다. (ParseException = 체크예외)
	}
}

Date, SimpleDateFormat 예제

  • 객체 만들지 않고 String으로 바로 변환 : String.format()
  • 시간 차이 구하기
    : Date로 변환 후 차를 구하고, 원하는 단위가 나올 때까지 나눈다.
    "yyyy.MM.dd" -> parse(), getTime() -> difference / (1000 * 60 * 60 * 24)
import java.text.*;
import java.util.*;
class MiniTest1 {
	public static void getD_day(int year, int month, int day) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
		try {
			long goal = sdf.parse(String.format("%d.%d.%d", year, month, day)).getTime();
			long today = sdf.parse(sdf.format(new Date())).getTime();
			
			long diff;
			String beforeOrAfter = "후";
			if(goal > today) {
				diff = goal - today;
			} else {
				diff = today - goal;
				beforeOrAfter = "전";
			}

			long days = diff / (1000 * 60 * 60 * 24);
			System.out.printf("%d일 %s입니다.\n", days, beforeOrAfter);
		} catch(ParseException e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		getD_day(2022, 12, 25);
		getD_day(2021, 12, 31);
		getD_day(2023, 3, 1);
	}
}

이클립스

  • 이클립스는 자바 파일을 바로 만들어 사용하지 않음
    프로젝트 - 자바 파일 순서로 만들어 사용함
    (프로젝트는 하나의 프로그램 단위라 생각하면 됨)

  • perspective : '환경' 의미

  • preference : 설정 변경

  • 패키지 : 필수 (지금은 도메인 뒤집어서 쓰기)

  • archive file : 압축파일 불러올 때

  • file system : 압축 안 된 파일 불러올 때

  • ??? : 워크스페이스에 있는 파일 불러올 때

  • 파일 불러올 때 경로 (.classpath, .project) 는 체크하지 않는다.
    (파일 경로가 다른 경우 오류가 나게 됨)

  • 안쓰는 프로젝트는 닫기

단축키

package kr.ac.green;

/*
 * ctrl + s : save(compile)
 * ctrl + f11 : run
 * ctrl + m : 창 최대화, 복원
 * ctrl + n : 새로만들기
 * ctrl + f6 : 에디터 변경
 * ctrl + d : 줄삭제
 * ctrl + / : 주석처리/해제
   ctrl + shift + f : 자동 줄맞춤
   ctrl + shift + o : 자동 임포트
   
   alt + shift + s -> c : 기본생성자
   alt + shift + s -> o : 생성자(파라미터)
   alt + shift + s -> r : getter/setter
   alt + shift + s -> s : toString
   
   main + ctrl + space : main 메서드 단축키
   sysout + ctrl + space : System.out.println();
   
   alt + shift + t -> n : 이름 한 번에 변경
   (alt -> t -> n도 가능)
   
   ctrl + click : 클래스, 메서드가 정의된 곳으로 커서 이동
profile
welcome

0개의 댓글