DateとTime
12955 ワード
DateとTimeの概要
なぜjava 8に新しい日付と時間APIがあるのか以前に使用したjava.util.Dateクラスは可変(オブジェクトの状態を変更可能)であるため、thread safe(マルチスレッド環境では安全ではない) はありません.クラス名不明(Date,含時) には多くのエラー(タイプ不安定(タイプ安全x).月は0から等) 日付の複雑なアプリケーションでは、通常Joda Timeが使用されます.
Java 8が提供するDate-time API JRS-310キット提供 設計哲学 Clear-APIは、より明確な を提供します. Fluent-APIよりスムーズ Immutable Extensible プライマリAPIは機械時間と人間時間 に分けることができる.マシンタイム表示EPOCK(1970年1月1日0時0分0秒)から現在までのタイムスタンプ 人間の時間とは、私たちがよく使う年、月、日、時、分、秒などを指します. タイムスタンプInstant, を使用は、特定の日付(LocalDate)、時間(LocalTime)、および時間(LocalDateTime) を使用することができる.では、Duration(時間ベース)とPeriod(日付ベース)が提供されます. DateTimeFormateを使用して、スケジュールを特定の文字列 にマッピングできます.
DateとTime API
マシンタイムで現在の状態を表現する方法
Instant.now():現在のUTC(GMT)を返します.
人間が使う表現の一つです LocalDateTime.Now():現在のシステムパーティションの日付 を返します. ZonedDateTime.Now(ZoneId.of(String):特定のパーティションを返す時間は です. LocalDateTime.of(int,Month,int,int,int,int,int,int):ローカル固有の日付 を返します. ZonedDateTime.of(int,Month,int,int,int,int,int,ZoneId):特定のパーティションの特定の日付 を返します.
期間の表示方法
Period/Duration. between()
グループ化またはマッピング
定義済みフォーマットを参照
https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#predefined
LocalDateTime.parse(String, DateTimeFormatter);
Dateteme 従来のAPIサポート
GregarianCalendarとDateタイプのインスタンスをInstantまたはZonedDateTimeに変換できます.
java.util.TimeZoneからjavaへtime.相互変換可能ZoneId リファレンス
https://www.inflearn.com/course/the-java-java8
なぜjava 8に新しい日付と時間APIがあるのか
Java 8が提供するDate-time API
DateとTime API
マシンタイムで現在の状態を表現する方法
Instant.now():現在のUTC(GMT)を返します.
Instant now=Instant.now();
System.out.println(now); //기준시 UTC, GMT
System.out.println(now.atZone(ZoneId.of("UTC")));
ZoneDateTime zonedDateTime= new.atZone(ZoneId.systemDefault());
System.out.println(zonedDateTime);
期間の表示方法
Period/Duration. between()
LocalDate today=LocalDate.now();
LocalDate birthDay=LocalDate.of(2020,Month.DECEMBER,26);
Instant now=Instant.now();
Instant plus=now.plus(10,ChronoUnit.SECONDS); //새로운 Instant가 나옴(예전에는 x)
Period between=Period.between(today, birthDay);
System.out.println(between.get(chronoUnit.MONTHS)); //between으로 날짜간 차이 출력
Period until=today.until(birthday);
System.out.println(util.get(ChronoUnit.DAYS)); //until로 날짜간 차이 출력
Duration duration=Duration.between(now,plus);
System.out.println(duration.getSeconds()); //기계용 시간 비교. Period는 인류용 시간 비교
定義済みフォーマットを参照
https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#predefined
LocalDateTime.parse(String, DateTimeFormatter);
Dateteme
LocalDateTime now= LocalDateTime.now();
DateTimeFormatter formatter=DateTimeFormatter.ofPattern("MM/d/yyyy");
LocalDate date=LocalDate.parse("07/15/1982",formatter); //문자열을 LocalDate 타입으로 파싱
System.out.println(now.format(formatter)); //02/1/2021 출력(현재 날짜). 현재 날짜를 지정한 포맷으로 출력
System.out.println(date); //1982-07-15 출력
GregarianCalendarとDateタイプのインスタンスをInstantまたはZonedDateTimeに変換できます.
java.util.TimeZoneからjavaへtime.相互変換可能ZoneId
ZoneId newZoneAPI= TimeZone.getTimeZone("PST").toZoneId(); //예전 API에서 최근 API로
TimeZone legacyZoneAPI= TimeZone.getTime(newZoneAPI); //최근 API에서 예전 API로
Instant newInstant= new Date().toInstant(); //Date에서 Instant로
Date legacyInstant= Date.from(newInstant) //Instant에서 Date로
https://www.inflearn.com/course/the-java-java8
Reference
この問題について(DateとTime), 我々は、より多くの情報をここで見つけました https://velog.io/@alwayslee_12/Date와-Timeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol