기존 java.util.Date 클래스
1. mutable하기 때문에 thread safe하지 않았다.
2. month가 0부터 시작한다.
3. Date 타입인데 시간까지 다룬다.
public class ExDateTime {
public static void main(String[] args) throws InterruptedException {
//과거 Date
Date date = new Date(); //Date인데 시간까지 다룬다 - 클래스이름이 명확하지 않다
long time = date.getTime();
System.out.println(date);
System.out.println(time);
Thread.sleep(1000*2);
Date after2Seconds = new Date();
System.out.println(after2Seconds);
after2Seconds.setTime(time);
System.out.println(after2Seconds); //mutable 하다
// Calendar today = new GregorianCalendar(2021, 7, 26); //month는 0부터 시작한다 //타입안정성이 없다
Calendar today = new GregorianCalendar(2021, Calendar.JULY, 26); //month는 0부터 시작한다 //타입안정성이 없다
System.out.println("today = " + today.getTime());
}
}
날짜(LocalDate), 시간(LocalTime), 일시(LocalDateTime)를 사용하자
public class ExDateTime {
public static void main(String[] args) throws InterruptedException {
//기계용 시간
Instant instant = Instant.now();
System.out.println(instant); //기준시 UTC = GMT
System.out.println(instant.atZone(ZoneId.of("UTC")));
ZoneId zoneId = ZoneId.systemDefault();
System.out.println("zoneId = " + zoneId);
ZonedDateTime zonedDateTime = instant.atZone(zoneId);
System.out.println("zonedDateTime = " + zonedDateTime);
//인류용 시간
LocalDateTime now = LocalDateTime.now(); //system zone //서버가 다르면 그 서버의 로컬시간
System.out.println("now = " + now);
LocalDateTime today1 = LocalDateTime.of(2021,7,26,0,0,0);
System.out.println("today1 = " + today1);
//기계용 기간을 비교 -> duration
Instant now1 = Instant.now();
Instant plus = now1.plus(20, ChronoUnit.SECONDS);
Duration between = Duration.between(now1, plus);
System.out.println("between.getSeconds() = " + between.getSeconds());
//인류용 시간을 비교 -> period
LocalDate today2 = LocalDate.now();
System.out.println("today2 = " + today2);
LocalDate tomorrow = LocalDate.of(2021,7,27);
Period period = Period.between(today2, tomorrow);
System.out.println("period.getDays() = " + period.getDays());
Period until = today2.until(tomorrow); //이때까지
System.out.println("until.get(ChronoUnit.DAYS) = " + until.get(ChronoUnit.DAYS));
System.out.println("until.getDays() = " + until.getDays());
//포메팅
LocalDateTime now2 = LocalDateTime.now();
System.out.println(now2);
System.out.println(DateTimeFormatter.ISO_LOCAL_DATE); //미리 정의되어있는것을 사용하자
DateTimeFormatter yyyyMMdd = DateTimeFormatter.ofPattern("yyyy/MM/dd");
System.out.println(now2.format(yyyyMMdd));
LocalDate parse = LocalDate.parse("2021/07/26",yyyyMMdd);
System.out.println(parse);
//예전 API와 호환
Date date2 = new Date();
Instant instant2 = date.toInstant(); //현재것으로 호환
Date newDate = Date.from(instant); //과거것으로 호환
//기타
LocalDateTime now3 = LocalDateTime.now();
LocalDateTime plus1 = now3.plus(10, ChronoUnit.DAYS); //ChronoUnit 외우자, 새로운 인스턴스를 만들자
System.out.println("plus = " + plus1);
}
}
'프로그래밍 > JAVA' 카테고리의 다른 글
자바 replaceAll 정규식 특수문자 제거 (0) | 2021.08.01 |
---|---|
자바 random 함수와 round 함수 이해 (0) | 2021.07.27 |
의존성과 의존성 주입(DI) (0) | 2021.07.20 |
1차 배열 2차 배열 sort(오름차순, 내림차순) (0) | 2021.07.18 |
Enum(열거형) (0) | 2021.07.17 |