가자미의 개발이야기

[자바] 시각과 날짜 관련 코드 본문

Java/자바 기본 문법

[자바] 시각과 날짜 관련 코드

가자미 2021. 2. 19. 11:14

1. 날짜 시각 관련 클래스

-시각을 표현하는 Instant, 시간을 표현하는 Duration(시간의 차이)

 

import java.time.Duration;
import java.time.Instant;

public class StreamPtc {
	public static void main(String[] args) {
		Instant start = Instant.now();	//현재 시각 정보를 담음
		System.out.println("시작 : "+ start.getEpochSecond());
		
		Instant end = Instant.now();
		System.out.println(" 끝 : "+end.getEpochSecond());
		
		
		Duration between = Duration.between(start, end); //두 시각의 차 계산
		
		System.out.println("밀리 초 단위 차 : "+between.toMillis());
	}
}

-시각 정보가 생략된 날짜 정보를 표현하는 LocalDate

-LocalDate는 immutable 인스턴스를 만든다.(수정이 안되고 매번 새로운 인스턴스를 생성)

import java.time.Duration;
import java.time.Instant;
import java.time.LocalDate;

public class StreamPtc {
	public static void main(String[] args) {
		//오늘
		LocalDate today = LocalDate.now();
		System.out.println("Today: "+today);
		//올 해의 크리스마스
		LocalDate xmas = LocalDate.of(today.getYear(), 12, 25);
		System.out.println("Xmas: "+xmas);
		//올 해의 크리스마스 이브
		LocalDate.eve = xmas.minusDays(1);
		System.out.prinln("Xmas Eve: "+eve);
	}
}

-날짜를 생략하고 시각 정보를 나타내는 LocalTime

-두 LocalTime의 차도 Duration의 between메소드로 한다.

-날짜 시각 모두 표현하고 싶으면 LocalDateTime 클래스를 사용한다.

 

import java.time.LocalTime;


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

		LocalTime today = LocalTime.now();

		LocalTime mt = LocalTime.now();
		mt.plusHours(2); mt.plusMinutes(10);
		
	}
}

-날짜의 차이를 구하는 period

(시각의 차는 Duration, 날짜의 차이는 Period)

import java.time.Duration;
import java.time.Instant;
import java.time.LocalDate;
import java.time.Period;

public class StreamPtc {
	public static void main(String[] args) {
		//오늘
		LocalDate today = LocalDate.now();
		System.out.println("Today: "+today);
		//올 해의 크리스마스
		LocalDate xmas = LocalDate.of(today.getYear(), 12, 25);
		System.out.println("Xmas: "+xmas);
		//올 해의 크리스마스 이브
		Period left = Period.between(today, xmas);
		System.out.println("xmas까지 앞으로 : "+
		left.getMonths()+"월 "+left.getDays()+"일");
	}
}

2. 시간대 적용과 출력 포맷

-시간대 정보를 담을 Zoned 인스턴스 만들기

-zoneid가 Europe/Paris인 시간대 정보를 인스턴스로 저장.

import java.time.ZoneId;

public class StreamPtc {
	public static void main(String[] args) {
		ZoneId paris = ZoneId.of("Europe/Paris");
		System.out.println(paris);	
	}
}

-ZonedDateTime클래스로 시차 구하기

import java.time.Duration;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class StreamPtc {
	public static void main(String[] args) {
		//이곳의 현재 날짜와 시각
		ZonedDateTime here = ZonedDateTime.now();
		//동일한 날짜와 시각의 파리
		ZonedDateTime paris = ZonedDateTime.of(
				here.toLocalDateTime(), ZoneId.of("Europe/Paris"));
		//이곳과 파리의 시차
		Duration diff = Duration.between(here, paris);
	}
}

-날짜 시각 출력 포맷을 

public static void main(String[] args){
	ZonedDateTime date = ZonedDateTIme.of(
    LocalDateTime.of(2020, 4, 25, 11, 20), ZoneId.of("Asia/Seoul");
    
    DateTimeFormatter fm1 = DateTimeFormatter.ofPattern("yy-M-d");
    DateTimeFormatter fm2 = DateTimeFormatter.ofPattern("yyyy-MM-d, H:m:s");
    DateTimeFormatter fm3 = DateTimeFormatter.ofPattern("yyyy-MM-d, HH:mm:ss VV");
    //년y 월M 일d 시H 분m 초s 시간대id VV

'Java > 자바 기본 문법' 카테고리의 다른 글

[자바] 필터 스트림  (0) 2021.02.26
[자바] I/O 스트림  (0) 2021.02.26
[자바] 스트림 활용 메소드  (0) 2021.02.17
자바 스트림의 기초  (0) 2021.02.09
자바 Optional 클래스  (0) 2021.02.09