sitelink1 http://jinbroing.tistory.com/226 
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  

[API 알아보기]

1) java.util.Date, java.util.Calendar

시스템 날짜시간 관련 유틸리티 객체

/*
   [Date + SimpleDateFormat]
    1) 시스템의 날짜, 시간을 읽을 수 있는 유틸리티
    2) 날짜를 주고 받을 때 주로 사용
    3) java.text.SimpleDateFormat 메서드로 특정 포맷 출력 가능 : 패턴 지정해줘야함
    - Format 관련 패키지 : java.text

*/

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest {
    public static void main(String[] args) {

        //다양한 생성자가 있지만 권장하지않는 어노테이션(Deprecated)가 붙어있음
        Date now = new Date();
        System.out.println(now.toString());

        SimpleDateFormat sdf = new SimpleDateFormat("YY년 MM월 dd일 hh시 mm분");
        String formatNow = sdf.format(now);
        System.out.println(formatNow);


    }
}

 

/*
    [Calendar + TimeZone]
    1) 날짜와 시간을 얻기위한 유틸리티
    2) abstract 클래스 : 인스턴스 생성X, extends -> 구현 클래스 인스턴스 생성
    - 국가, 문화, 지역마다 날짜, 시간 계산 방법이 다르기때문에 계산에 필요한 메서드, 필드만 선언되어있음 : abstract인 이유
    - 하위 클래스에서 구현하도록 되어있음 : 특별한 역법 사용하지않는다면 getInstance로 Calendar 타입 인스턴스 얻을 수 있음
    - getInstance 인자로 locale 지정해주면 특정 위치에 따른 시간, 포맷 설정 : Timezone 객체 사용

    3) Date 와 Calendar 차이
    - Date : 시스템의 시간 정보를 그대로 가져오는 목적이라면
    - Calendar : 관련 값(상수 필드)을 가져와서 직접 구현
*/

import java.util.Calendar;
import java.util.TimeZone;

public class CalendarTest {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();

        //날짜 계산에 필요한 필드는 static final int로 선언
        System.out.println(cal.get(Calendar.DAY_OF_MONTH));
        System.out.println(cal.get(Calendar.HOUR));
        System.out.println(cal.get(Calendar.AM_PM)); // AM: 0, PM: 1

        /* 요일마다 이벤트! */
        int week = Calendar.DAY_OF_WEEK;
        switch (week){
            case Calendar.MONDAY:

                break;

            case Calendar.TUESDAY:

                break;

            case Calendar.WEDNESDAY:

                break;
        }

        /* 시스템 변경 없이 : 사용 가능한 로케일 리스트 요청 */
        String[] list = TimeZone.getAvailableIDs();
        for(String element : list){
            System.out.println(element);
        }

        //Date 인스턴스 얻는 getTime()을 쓰면 시스템 시간을 얻어옴
        Calendar rome = Calendar.getInstance(TimeZone.getTimeZone("Europe/Rome"));
        //System.out.println(rome.getTime()); (x)
        System.out.println(rome.get(Calendar.HOUR));
    }
}

 

2) java.text.Format

- abstract 클래스 : Format 구현하는 각종 클래스 - 포맷팅과 관련한 객체타입

(1) DecimalFormat

(2) SimpleDateFormat

(3) MessageFormat

 

포맷팅 관련 인터페이스가 있다는 점을 알아두자

public class SimpleDateFormatTest {
    public static void main(String[] args) {

        /*
            인스턴스 생성 시 포맷 패턴
            1) y: 년
            2) M: 월
            3) d: 일
            4) D: 일(365일)
            5) E: 요일
            6) a: 오전/오후
            7) H: 시(24시간제)
            8) h: 시(12시간제)
            9) m: 분
            10) s: 초

            그 외 년의 몇번째 주, 월의 몇번째 주 등이 있음

        */
        String[] pattern = {
                "yy년 M월 d일 H시 m분",
                "D번째 날"
        };

        SimpleDateFormat sdf = null;
        Date now = null;
        for(int i=0; i<pattern.length; i++){
            sdf = new SimpleDateFormat(pattern[i]);
            now = new Date();

            System.out.println(sdf.format(now));
        }

    }
}
/*
    - 문자열 형식 포맷팅하기
    - 네트워크할 때는 json이지! : gson을 쓰자! 간단하게 json으로 포맷팅해준다! 역포맷팅도 된다!
    - SQL문 작성할 때 편하겠음

*/

import java.text.MessageFormat;

public class MessageFormatTest {
    public static void main(String[] args) {
        String id = "1234";
        String name = "박진형";

        String txt = "회원 ID : {0} \n회원 이름 : {1}";
        String msg = MessageFormat.format(txt, id, name);
        System.out.println(msg);
    }
}
import java.text.DecimalFormat;

public class DecimalFormatTest {
    public static void main(String[] args) {
        /*
            - 다양한 숫자 관련 포맷
            1) 통화 기호 : 유니코드 + 단위 표현
        */
        double num = 12345.67;
        DecimalFormat df = null;
        String[] pattern = {
                "0", "0.0", "#,###",
                "\u00A4 #,###"
        };


        for(int i=0; i<pattern.length; i++){
            df = new DecimalFormat(pattern[i]);
            System.out.println(df.format(num));
        }
    }
}


 

3) java.time : java8~

시간날짜 관련한 객체 타입 패키지

정보 얻기설정연산파싱 모두 모여있음

 

- java8부터 새롭게 생긴 API 패키지
 

/*
    - 날짜와 시간과 관련해서 권장하지않는 방법을 대체하고 기능을 확장한 새로운 패키지
    - 정보 얻기 + 세팅(변경) + 연산 + 파싱 모두 한 패키지 내에 있음 : 이전에는 각각 패키지에 있었던 것들을 모아놓음
    - 파싱해서 타입 변환시킴 : 타입의 메서드 사용
    (1) TimeFormat : http://docs.oracle.com/javase/8/docs/api/ DateTimeFormatter 참고
    (2) 사용자 지정 포맷을 사용해도 됨
    (3) 특정 타입으로 변환시키는 것은 특정 타입이 가지는 메서드를 사용하기위해서
    (4) 특정 타입을 String으로 변환시킬 수 있음 : 포맷에 맞게
*/

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.TimeZone;

public class TimePkgTest {
    public static void main(String[] args) {

        /* LocalDate : 로컬 날짜 클래스 */
        System.out.println(LocalDate.now().toString());
        LocalDate targetDate = LocalDate.of(2017, 1, 1);
        System.out.println(targetDate.toString());
        LocalDate now = LocalDate.now();
        System.out.println(now.getMonth());
        System.out.println(now.minusMonths(1).getMonth());

        //문자열을 파싱해서 LocalDate형으로 변환 : LocalDate의 메서드를 사용할 수 있음
        System.out.println(LocalDate.parse("2017.09.09", DateTimeFormatter.ofPattern("yyyy.MM.dd")).toString());


        /* LocalTime : 로컬 시간 클래스 */
        LocalTime nowTime = LocalTime.now();
        System.out.println(nowTime.toString());
        System.out.println(nowTime.withHour(10)); // 특정 시로 변경
        //String으로 변경 : 특정 포맷으로 포맷팅해서 변환
        System.out.println(nowTime.format(DateTimeFormatter.ofPattern("HH시 mm분")));


        /* LocalDateTime : 로컬 날짜 및 시간 관련 클래스 */
        System.out.println(LocalDateTime.now().toString());


        /* ZonedDateTime : 특정 타임존 날짜 및 시간 클래스, ZoneID로 정보를 얻어오는 클래스와 TimeZone 관련 클래스 함께 사용 */
        String[] list = TimeZone.getAvailableIDs();
        ZonedDateTime zdt = ZonedDateTime.now();
        System.out.println("Zone ID : " + zdt.getZone());
        System.out.println(ZonedDateTime.now(ZoneId.of(list[0])).toString());


        /* Instant : 특정 시점의 타임스탬프 클래스, 두 시점 간에 우선순위를 따질 때 사용 */
        Instant ts1 = Instant.now();

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        Instant ts2 = Instant.now(); //Instant형 인스턴스

        if(ts1.isBefore(ts2)){
            /* 앞일 떄 */
        } else if(ts1.isAfter(ts2)){
            /* 뒤일 때 */
        } else {
            /* 같을 떄 */
        }

        System.out.println(ts1.until(ts2, ChronoUnit.NANOS));
        
    }
}

 

번호 제목 글쓴이 날짜 조회 수
22 문자의 ASCII 값 테이블 - String.charAt() file 황제낙엽 2023.03.28 0
21 숫자형 클래스 BigInterger (int, long 범위 초과) 황제낙엽 2022.01.16 368
20 LocalDate.now() 오늘 날짜 황제낙엽 2022.01.16 7
19 지정한 일자보다 하루 뒤로 설정하기 황제낙엽 2021.01.14 15
18 Calendar.set() - 날짜 설정하기, Calendar.add() - 날짜 더하기, Calendar.roll() - 그 부분만 날짜 더하기 황제낙엽 2019.08.02 89
17 현재날짜, 현재시간을 원하는 형태로 출력하는(Format) 다양한 방법 file 황제낙엽 2019.07.29 66
16 자바 소수점 n번째 자리까지 반올림하기 황제낙엽 2019.07.29 163
15 한글 초성 중성 종성 분리 유틸리티(자작) file 황제낙엽 2019.05.07 244
14 한글 초성 중성 종성 분리 (자모분리) 황제낙엽 2019.05.07 100
13 한글 인코딩의 이해 1편: 한글 인코딩의 역사와 유니코드 황제낙엽 2019.05.07 198
12 한글 인코딩의 이해 2편: 유니코드와 Java를 이용한 한글 처리 file 황제낙엽 2019.05.07 231
11 현재 월,일,시간,분,초 등등 가져오기 황제낙엽 2017.11.02 858
» Calendar, Date, Format, java.time 패키지 황제낙엽 2017.10.31 108
9 날짜, 시간 문자열 값으로 Date 오브젝트로 만들기 >> SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US) 황제낙엽 2017.10.31 1516
8 SimpleDateFormat Symbol file 황제낙엽 2016.12.20 74
7 숫자의 형식화 #1(Part-1)-java.text.NumberFormat 황제낙엽 2008.07.08 19
6 숫자 에 대응 되는 문자의 형식화 #2 황제낙엽 2008.07.08 33
5 숫자 에 대응 되는 패턴의 형식화 #1 황제낙엽 2008.07.08 51
4 숫자를 통화 표기 형태로 변환하기 황제낙엽 2008.07.08 27
3 NumberFormat, DecimalFormat 사용예 황제낙엽 2008.07.08 94