java8 날짜 시간 API 사용 및 포맷 방법:

4763 단어
이전 날짜에 존재하는 문제 1.Date와 Calendar는 라인 보안이 아닙니다. 라인 보안 문제를 처리하기 위해 추가 코드를 작성해야 합니다. 2.시간대 문제를 처리하기 위해 추가 코드를 작성해야 합니다. 새로운 날짜 API ZoneId: 시간대 ID, Instant과 LocalDateTime이 서로 바뀌는 규칙을 확인하기 위해 Instant: 시간선의 한 점을 나타내는 LocalDate: 시간대가 없는 날짜를 나타냅니다. LocalDate는 변할 수 없고 라인이 안전한 LocalTime: 시간대가 없는 시간을 나타냅니다.LocalTime은 변할 수 없고 라인이 안전한 LocalDate Time: 시간대가 없는 날짜와 시간을 나타냅니다. LocalDateTime은 변할 수 없고 라인이 안전한 Clock: 현재 시간, 날짜, 시간에 접근하기 위해 시간대Duration: 시간과 초로 시간을 표시하는 수량 LocalDate 현재 시간을 가져옵니다. LocalDate localDate = LocalDate.now(); 날짜를 지정할 수 있습니다: of 또는 parse 방법으로 LocalDate.of(2017, 07, 20); LocalDate.parse("2017-07-20"); 시간을 지정한 후에도 시간을 늘리고 줄일 수 있다
현재 시간에 대한 N일 LocalDate tomorrow = LocalDate.now().plusDays(1);//일주일 후now.plusWeeks(1)//이틀 전now.minusDays(2)//한 달 증가하면 2017-02-31이 나타나지 않고 그 달의 마지막 유효일, 즉 2017-02-28 LocalDate로 돌아갑니다.of(2017, 1, 31).plus Months(1) is Before is After는 두 개의 Local Date를 비교하여 is Leap Year가 윤년인지 아닌지를 판단한다.
LocalTime(로컬 시간) LocalTime은 18:00:00과 같은 하루 중 어느 시간을 나타냅니다.LocaTime은 LocalDate와 유사하며 API도 유사합니다.주의해야 할 것은 로컬타임 자체가 AM인지 PM인지에 관심이 없고 포맷 프로그램이 이 일을 책임진다는 것이다.LocalDateTime (로컬 날짜 시간) LocalDateTime 은 시간대를 정하는 데 적합한 날짜와 시간을 표시합니다.시간대를 뛰어넘는 문제에 적합하지 않다.
일반적인 포맷 현재 시간: (일반적이고 중요한) DateTimeFormatter.ISO_LOCAL_DATE.format(LocalDate.now() 서식 적용 이후의 값은 2018-09-25
//20170101 이 방법은 시간 스탬프를 만드는 데 사용할 수 있습니다. DateTimeFormatter.BASIC_ISO_DATE.format(LocalDate.of(2017, 1, 1));
//2017-01-01T09:10:00 DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(LocalDateTime.of(2017, 1, 1, 9, 10, 0));
사용자 정의 날짜 포맷//2017-02-27 22:48:52 DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now())
/**********************************************************************************Instant는 정확한 시간을 의미하며 타임 스핀은 수많은 시점으로 구성되어 있습니다.정적 메서드 사용 Instant.now()는 현재 시점을 가져옵니다.
코드 실행 시간을 계산하는 방법은 다음과 같습니다.
Instant start = Instant.now();//이 시간은 국제시간에서 8시간 동안 중국 시간으로 오프셋을 처리해야 하는doSomething()이다.
Instant end = Instant.now();
Duration timeElapsed = Duration.between(start, end); long millis = timeElapsed.toMillis(); System.out.println("millis = "+ millis);
@Query("select new map(a.loginName,a.mobile,a.email,a.userId) from UserInfo a where a.userId in :userIds")
날짜 포맷에 대한 작업 요구 사항 1: 문자열을 LocalDateTime 포맷으로 변환
public static void main(String[] args) {
    String  aa="2019-01-02 22:13:10";
    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    LocalDateTime time = LocalDateTime.parse(aa, dateTimeFormatter);
    System.out.println(time);
}
  :
2019-01-02T22:13:10

요구 2: 문자열을 롱 형식으로 바꾸는 시간 스탬프
public static void main(String[] args) {
    String  aa="2019-01-02 22:13:10";
    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    LocalDateTime time = LocalDateTime.parse(aa, dateTimeFormatter);
    long l = time.toEpochSecond(ZoneOffset.of("+8"));
    System.out.println(l);
}
  :1546438390

요구 사항 3: LocalDateTime을 String 형식의 시간 형식으로 변환
public static void main(String[] args) {
    String  aa="2019-01-02 22:13:10";
    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    LocalDateTime time = LocalDateTime.parse(aa, dateTimeFormatter);
    String format = time.format(dateTimeFormatter);
    System.out.println(format);
}

필요4: 연월일을 나누어 주고 시간 형식으로 포맷된 문자열을 제공합니다
public static void main(String[] args) {
    //          
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.of("+8"));
    ZonedDateTime time = ZonedDateTime.parse("2019-03-05" + " 00:00:00",formatter).withHour(12).withMinute(0).withSecond(0);
    String format = time.format(formatter);
    System.out.println(format);

}

2019-03-05 12:00:00

Instant LocalDateTime ZonedDateTime 차이점

/**
 * Instant      0            8                    UTC  
 *                  Z
 *2019-04-01T02:36:38.610Z
 *LocalDateTime                 
 *2019-04-01T10:36:38.610
 * ZonedDateTime             
 */2019-04-01T10:36:38.610+08:00[Asia/Shanghai]

yyy-MM-dd HH:mm:ss 형식의 시간을 HH:mm로 변환
DateTimeFormatter formatterFull = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.of("+8"));
DateTimeFormatter formatterHHmm = DateTimeFormatter.ofPattern("HH:mm");
ZonedDateTime time = ZonedDateTime.parse(operateDate +" 00:00:00",formatterFull).withHour(hourTaskDTO.getOperateHour());
dayEnergyPointVM.setSortDate(time.format(formatterHHmm));

좋은 웹페이지 즐겨찾기