자바는 시간 날짜, 일정 및 LOCALDATE / LocalDateTime 객체

 I. 서론

  날짜 : 날짜, 시간, 밀리 초 수를 포함 java.util.Date 패키지.

  일정 : 오래된의 java.util.Calendar의 패키지, 추상적 수정, 여러 가지 날짜는 달력 클래스로 이동.

  LOCALDATE / LocalDateTime : java.time.LocalDate / java.time.LocalDateTime 패키지,이 클래스는, 불변으로, thread에 대해서 안전하다. 은 Using equals비교 방법.

二, java.util.Date

  의 setXXX ()과의 getXXX () 날짜는 날짜, 방법의 날, 올해는, 시간이 timezoneoffset의 등이 포기 된 가져옵니다.

 

三, java.util.Calendar의

  공공 추상 클래스의 달력은   , 객체 직렬화를 구현 Cloneable을, 대등 <확장 일정 >

  Calendar클래스는 추상 클래스, 메소드는 특정 순간 달력 필드의 집합 사이의 변환을 할 수있다 YEAR,, MONTH, DAY_OF_MONTH, HOUR등, 및 다음 주 취득의 날짜와 달력 필드를 조작하는 것을 의미한다. 00.000의 GMT (그레고리) : 타임 인스턴트 일째 0시 00 1970. 1. 12 일자 밀리 세컨드 값으로 표현 될 수 에포크 오프셋. 클래스는 패키지 외부의 특정 필드 및 캘린더 시스템을 달성하기위한 다른 방법을 제공합니다.

 

      달력 C = Calendar.getInstance (); 
        c.add (Calendar.DATE, -1); // 减一天 
        StringBuffer를 BF = 의 StringBuffer (); 
        bf.append (c.get (로서 Calendar.YEAR) + 「年」); 
        bf.append (c.get (Calendar.MONTH) +1+ "月" ); 
        bf.append (c.get (Calendar.DATE) + "日" ); 
        bf.append (c.get (Calendar.HOUR_OF_DAY) + "时"); // 24小时制
         // bf.append (c.get (Calendar.HOUR) + "时"); // 12小时制 
        bf.append (c.get (Calendar.MINUTE) + "分" ); 
        bf.append (c.get (일정입니다.); 
        bf.append ( "本年第"+ c.get (Calendar.DAY_OF_YEAR) + "天]" ); 
        bf.append ( "本月第"+ c.get (Calendar.DAY_OF_WEEK_IN_MONTH) + "周]" ); 
        bf.append ( "本周第"+ c.get (Calendar.DAY_OF_WEEK의) + "天]" ); 
        bf.append (c.get (Calendar.WEEK_OF_MONTH) + ";今年第"+ c.get (Calendar.WEEK_OF_YEAR) + "周");    

 

四, java.time.LocalDate / java.time.LocalDateTime

  공공 최종 클래스는 확장 개체 , 시간적 구현 TemporalAdjuster, ChronoLocalDate, 직렬화를

  LOCALDATE / LocalDateTime 날짜 - 시간 객체가 불변 일이며, 일반적으로 일 것으로 간주된다. 당신은 또한 날짜와 같은 다른 날짜 필드, 요일과 요일에 액세스 할 수 있습니다. 예를 들어, 값 「2 2007 년 12 월 "저장할 수 있습니다 LocalDate.

이 클래스는 저장하거나 시간 또는 시간대를 표시하지 않습니다. 오히려 그것은 생일에 대한 설명의 일이다. 그것은 인스턴트 메시징 추가 정보가없는 타임 라인,, 등의 오프셋 (offset), 또는 시간대를 나타낼 수 없습니다.

ISO-8601日历系统是当今世界绝大多数的现代民用日历系统. 일상 생활의 태양력 시스템에 적용되어 오늘날의 윤년 규칙에 해당합니다. 오늘 작성된 대부분의 응용 프로그램, ISO-8601 규칙은 전적으로 적절하다. 그러나, 어떤 역사적 날짜의 사용은 ISO-8601 방법이 부적절하다고 할 응용 프로그램을 수정하도록 요구했다.

 

/ ** 
 * 현재 시간을 가져 특정 시간을 지정합니다. 시간 빼기 
 * / 
LocalDateTime LDT = LocalDateTime.now (); LocalDate.now (); 
LocalTime.now (); 
ldt.plusHours (8L)
ldt.plusSeconds (10L) ldt.format (DateTimeFormatter.ofPattern (
의 "MM-DD-YYYY의 HH : MM : SS" )); LocalDateTime LDT2 . ldt.minus = (5 , ChronoUnit.MONTHS) ldt2.atZone (ZoneId.systemDefault ()); LDT2 = ldt2.withHour (2 ) LDT2 ldt2.withYear = (2015 ) LDT2 = ldt2.with (ChronoField.MONTH_OF_YEAR ,. 3 );
/ **
* 계산 구간 에 대한 * 기간 일,시, 분, 초 등을 산출 * 해주기 위해 사용되는 계산 달 * / 지속 기간
= Duration.between (LDT, ldt2); duration.toDays (); duration.toHours (); duration.toMinutes (); 개시 기간 = Period.between (ldt.toLocalDate () ldt2.toLocalDate ()); period.getYears (); period.getMonths (); period.toTotalMonths (); / ** *与날짜的转化, 형식为문자열 * / 날짜 날짜


= Date.from (ldt2.atZone (ZoneId.systemDefault ()) toInstant ().); dateTime에 LocalDateTime = LocalDateTime.ofInstant (date.toInstant () ZoneId.systemDefault ()); ldt3.format (DateTimeFormatter.ofPattern ( "YYYY-MM-DD HH : MM : SS" ));
/ **
*根据需求需要取得当天的零点 * / LocalDateTime today_start
= LocalDateTime.of (LocalDate.now (), LocalTime.MIN); // 일 제로 문자열 td_st_str = today_start.format (DateTimeFormatter.ofPattern ( "YYYYMMDDHHMMSS" )); // 하루의 시간이 끝날 때 얻을 LocalDateTime의 today_end을 = LocalDateTime.of (LocalDate.now (), LocalTime.MAX); // 0 일째 / **
LocalDateTime와 * 날짜 문자열 상호 변환
* / DateTimeFormatter DF
= DateTimeFormatter.ofPattern (이하 "MM-DD-YYYY의 HH : MM : SS" ) LocalDateTime 시간 = LocalDateTime.now (); 문자열 localTime를, = df.format (시간); LocalDateTime LDTLocalDateTime.parse = ( "2016년 8월 8일 18시 8분 8초" , DF) 에서 System.out.println는 ( "String 형의 LocalDateTime 시간으로 설정 :"+ localTime을,) 에서 System.out.println ( "입력 문자열 시간은 LocalDateTime로 변신합니다 : "+ LDT); / ** * LocalDateTime 유형, 관심에 의해 밀리 긴 가져 오기, 동부 여덟 개 지역 * / 긴 newSecond1
.. = LocalDateTime.now () toInstant (ZoneOffset.of ("+ 8 " .)) toEpochMilli ();

 

추천

출처www.cnblogs.com/choua1997/p/11570232.html