Java의 java.time.LocalDateTime관련 자주 사용하는 몇 가지를 메모 목적으로 정리합니다.
- 예전 java 1.7까지는 joda를 많이 사용했고, Java기본 패키지에 포함된 이후에도 바쁘면 joda를 사용했습니다.
- 가능하면 java 기본 패키지를 사용하는게 좋습니다.
- 계속해서 내용은 추가할 예정입니다.
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Date;
/**
* Java의 java.time.LocalDateTime 관련 몇가지 사용 예 - 작성중
* - joda를 많이 썻던 개발자들을 위해 샘플 작성
*
* @author
*/
public class LocalDateTimeSample {
public static ZoneId pstZoneId = ZoneId.of("America/Los_Angeles"); //PST는 ZoneId가 'America/Los_Angeles' 임
public static ZoneId pdtZoneId = ZoneId.of("GMT-07:00"); //PDT는 ZoneId가 'GMT-07:00' 임. 참고: https://savvytime.com/converter/pdt-to-kst-utc/aug-1-2021/3am
public static DateTimeFormatter FMT_YMDHIS = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
/**
* Java의 java.time.LocalDateTime 관련 몇가지 샘플
*
* @param args
*/
public static void main(String[] args) {
System.out.println("\n");
final Date now = new Date();
System.out.println(String.format("java.util.Date 타입의 현재 일시: %s\n\n", now));
LocalDateTime ldt = LocalDateTime.ofInstant(now.toInstant(), ZoneId.systemDefault());
System.out.println(String.format("java.util.Date를 java.time.LocalDateTime 로 변환:%s\n", ldt));
//혹은 아래와 유사하하게 Date객체로 변환 가능
//Instant instant = utcZonedDateTime.withZoneSameInstant(ZoneId.of("UTC")).toLocalDateTime().atZone(ZoneId.of("UTC")).toInstant();
//java.util.Date.from(instant);
final String pattern = "yyyy-MM-dd-HH:mm";
System.out.println(String.format("LocalDateTime을 패턴 '%s'으로 포맷팅: %s\n", pattern, ldt.format(DateTimeFormatter.ofPattern(pattern))));
System.out.println(String.format("1일 후는: %s", ldt.plusDays(1).format(FMT_YMDHIS)));
System.out.println(String.format("3일전은: %s", ldt.minusDays(3).format(FMT_YMDHIS)));
String ymd = "20220501";
DateTimeFormatter fmtYmd = DateTimeFormatter.ofPattern("yyyyMMdd");
LocalDate dateYmd = LocalDate.parse(ymd, fmtYmd);
System.out.println(String.format("%s 문자열을 포맷팅 후 date객체 변환 결과: %s", ymd, dateYmd));
LocalDate toDay = LocalDate.now();
System.out.println(String.format("오늘은 '%s' 입니다.", toDay));
System.out.println(String.format("이번달의 1일은 '%s' 입니다.", toDay.withDayOfMonth(1)));
System.out.println("\n");
ZoneId defaultZoneId = ZoneId.systemDefault();
Date firstMonthDayDT = Date.from(toDay.atStartOfDay(defaultZoneId).toInstant());
System.out.println(String.format("이번달의 1일의 java date타입은 '%s' 입니다.", firstMonthDayDT));
System.out.println("\n");
System.out.println("원본 LocalDateTime: " + ldt);
System.out.println("\t초 미만 절삭: " + ldt.truncatedTo(ChronoUnit.SECONDS));
System.out.println("\t분 미만 절삭: " + ldt.truncatedTo(ChronoUnit.MINUTES));
System.out.println("\t시간 미만 절삭: " + ldt.truncatedTo(ChronoUnit.HOURS));
System.out.println("\t일 미만 절삭: " + ldt.truncatedTo(ChronoUnit.DAYS));
}
}
결과
'JAVA > Java 일반' 카테고리의 다른 글
Java Optional에 대한 생각 (0) | 2022.07.12 |
---|---|
간단한 월 달력 생성 프로그램 (0) | 2022.05.10 |
java stream을 이용한 정렬 (0) | 2022.01.10 |
대용량 처리시 부하분산을 위한 데이터 분할 처리(간략) (0) | 2021.12.10 |
구글 재무보고서 중에서 '수익'보고서를 다운로드하는 샘플 프로그램(download google earnings report) (1) | 2021.11.26 |