가자미의 개발이야기
[자바] 시각과 날짜 관련 코드 본문
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 |