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));
        
    }
}

 

번호 제목 글쓴이 날짜 조회 수
» Calendar, Date, Format, java.time 패키지 황제낙엽 2017.10.31 108
250 날짜, 시간 문자열 값으로 Date 오브젝트로 만들기 >> SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US) 황제낙엽 2017.10.31 1516
249 시스템 속성(System Property) 클래스를 이용하여 jni 라이브러리 사용하기 황제낙엽 2017.09.22 37
248 Java 실행 옵션들 황제낙엽 2017.08.23 3367
247 HttpsURLConnection 을 사용한 SSL서버 접속 file 황제낙엽 2017.08.02 231
246 서버구동시 주기적으로 동작을 수행하는 스레드를 함께 실행하는 서블릿 황제낙엽 2017.08.02 131
245 HttpURLConnection 사용 샘플( JSP , SERVLET ) 황제낙엽 2017.08.01 254
244 HttpURLConnection 사용하기 황제낙엽 2017.08.01 393
243 [HttpURLConnection] POST로 파라미터 넘기기 황제낙엽 2017.08.01 507
242 HttpURLConnection POST 방식 사용하기 황제낙엽 2017.08.01 370
241 Runtime 클래스를 이용한 윈도우 프로그램 실행 예제 황제낙엽 2017.08.01 113
240 JSON Util (JSON 을 다루기 위해 직접 작성한 유틸 클래스) file 황제낙엽 2017.07.10 461
239 자바 리플렉션(Java Reflection) 간단한 설명 및 사용방법 정리 file 황제낙엽 2017.07.10 135
238 Generate random numbers (Random.java) 황제낙엽 2017.07.02 490
237 쓰레드(Thread)를 중간에 종료시키는 방법 황제낙엽 2017.03.15 5127
236 JSON 라이브러리(API) 종류 황제낙엽 2017.01.18 404
235 [JSON기초04] 자바 JSON 데이터에서 KEY 값 알아오기 (TIP) 황제낙엽 2017.01.18 6641
234 [JSON기초03] 자바 JSON Google Simple JSON을 이용한 간단한 JSON DATA 파싱 황제낙엽 2017.01.18 566
233 [JSON기초02] 자바 JSON Google Simple JSON을 이용한 간단한 JSON DATA 생성 황제낙엽 2017.01.18 111
232 [JSON기초01] JSON이란? XML이란? JSON 개념, XML 개념 설명 황제낙엽 2017.01.18 408