sitelink1 http://jinbroing.tistory.com/226 
sitelink2  
sitelink3  
extra_vars4  
extra_vars5  
extra_vars6  

[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 com.fasterxml.jackson 을 이용한 json data 작성 예제 황제낙엽 2025.10.17 1
21 [ChatGPT] JsonNode 객체에서 asText()와 toString() 의 차이점 황제낙엽 2025.06.30 3
20 [JSONObject & JsonNode] "com.fasterxml.jackson" 과 "com.googlecode.json-simple" 라이브러리에 대하여 황제낙엽 2025.02.06 21
19 [Gemini, Jackson] JsonNode의 asText(), textValue(), toString() 함수들과 ObjectMapper.writeValueAsString() 함수 황제낙엽 2025.02.06 212
18 [ChatGPT] json data 의 정렬 (jackson, json simple, gson) 황제낙엽 2024.07.23 400
17 [Gemini] HttpURLConnection 클래스를 이용한 데이터 전송 방식 비교 황제낙엽 2024.03.14 1068
16 [JsonNode] depth 가 여러 단계인 json data 내부를 조회하는 java code 예제 (from Bard) file 황제낙엽 2023.08.09 1037
15 HttpServletRequest, HttpServletResponse, JSONObject, POST 황제낙엽 2022.01.12 720
14 jQuery JSON 데이터 통신의 특성 (HttpServletRequest) 황제낙엽 2019.06.23 739
13 JSON과 GSON 황제낙엽 2019.03.24 748
12 [HttpURLConnection, HttpsURLConnection] 코드참조용 샘플프로젝트 secret 황제낙엽 2019.01.18 0
11 json-rpc 에서 한글 문제 황제낙엽 2018.08.08 740
» Calendar, Date, Format, java.time 패키지 황제낙엽 2017.10.31 754
9 JSON Util (JSON 을 다루기 위해 직접 작성한 유틸 클래스) file 황제낙엽 2017.07.10 988
8 JSON 라이브러리(API) 종류 황제낙엽 2017.01.18 909
7 [JSON기초04] 자바 JSON 데이터에서 KEY 값 알아오기 (TIP) 황제낙엽 2017.01.18 7578
6 [JSON기초03] 자바 JSON Google Simple JSON을 이용한 간단한 JSON DATA 파싱 황제낙엽 2017.01.18 1136
5 [JSON기초02] 자바 JSON Google Simple JSON을 이용한 간단한 JSON DATA 생성 황제낙엽 2017.01.18 661
4 [JSON기초01] JSON이란? XML이란? JSON 개념, XML 개념 설명 황제낙엽 2017.01.18 871
3 JSON-lib Java Library file 황제낙엽 2013.04.09 629