日付と時刻の処理方法のJava 8
1. Javaの8に今日の日付を取得します。
- JavaのLOCALDATE 8は、今日の日付を表すために使用されます。そして、異なるjava.util.Dateは、それが唯一の日付、時間は含まれません。あなただけの、このクラスを使用する必要がある場合には日付を表します。
LocalDate now = LocalDate.now();
System.out.println(now);
//结果
2018-06-20
2. Javaの8年、月、日付情報を取得します
- LOCALDATEクラスは、月、日に、で迅速な方法を取得提供し、それはまた、日付属性の他の多くの例が含まれています。簡単に前に好きで、必要な日付情報を取得することはできませんこれらのメソッドを呼び出すことで、私たちは、クラスjava.util.Calendarのに依存する必要があります
LocalDate now = LocalDate.now();
int year = now.getYear();
int monthValue = now.getMonthValue();
int dayOfMonth = now.getDayOfMonth();
System.out.printf("year = %d, month = %d, day = %d", year, monthValue, ayOfMonth);
//结果
year = 2018, month = 6, day = 20
3.でJava 8で特定の日付を扱います
- 最初の例では、今staticファクトリメソッドを介して、我々は()今日の日付を作成するのは非常に簡単です、あなたはまた、任意の日付を作成するために、別の有用なファクトリメソッドLocalDate.of()を呼び出すことができ、この方法では、月、年を追う必要です、引数として日本とは、対応するインスタンスLOCALDATEを返します。このアプローチの利点は、設計ミスが1900年に開始し、そのような年として、古いAPIを繰り返していなかったということである、月ようにゼロであり、。次の例のようにWYSIWYG日は、6月20日、無隠された臓器を示しています。
LocalDate date = LocalDate.of(2018, 06, 20);
System.out.println(date);
Javaの8 4.同じ2つの日付かどうかが決定されます
- 二つの日付を分析等しいです
LocalDate now = LocalDate.now();
LocalDate date = LocalDate.of(2018, 06, 20);
if (date.equals(now)) {
System.out.println("同一天");
}
5.でJava 8での誕生日のように、この定期的なイベントをチェック
- Javaはどのようにこれらのお祭りやその他の定期的なイベント、それをチェックするには?答えはMONTHDAYクラスです。このクラスでは、毎年、イベントの発生を決定するためにそれを使用できることを意味し、月と日を兼ね備え、年取り除きます。このクラスは似ているとYEARMONTHクラスがあります。これらのクラスはまた、不変とスレッドセーフな値型です。
LocalDate now = LocalDate.now();
LocalDate dateOfBirth = LocalDate.of(2018, 06, 20);
MonthDay birthday = MonthDay.of(dateOfBirth.getMonth(), dateOfBirth.getDayOfMonth());
MonthDay currentMonthDay = MonthDay.from(now);
if (currentMonthDay.equals(birthday)) {
System.out.println("Happy Birthday");
} else {
System.out.println("Sorry, today is not your birthday");
}
//结果
Happy Birthday
6. Javaの8で現在の時刻を取得します。
- 買収や近親者の、取得時間がにLocalTimeクラスを使用して、時間だけでなくLOCALDATE日のようなJava 8の日付の例。あなたは、現在の時刻を取得するために、今()staticファクトリメソッドを呼び出すことができます。デフォルトの形式はHH:MM:SSです:NNN。
LocalTime localTime = LocalTime.now();
System.out.println(localTime);
//结果可以看到当前时间就只包含时间信息,没有日期。
13:35:56.155
7時間で、既存の時間を追加する方法
- 利点とスレッドセーフの同じ種類に加えてJavaの8、だけでなく、より良いplusHoursを提供()メソッドは、()を追加置き換え、および互換性があります。これらの方法は、その硬直の、にLocalTimeの新しいインスタンスを返すことに注意してください、リターンは、変数の代入を使用する必要があります。
LocalTime localTime = LocalTime.now();
System.out.println(localTime);
LocalTime localTime1 = localTime.plusHours(2);//增加2小时
System.out.println(localTime1);
//结果
13:41:20.721
15:41:20.721
一週間後の日付を計算する方法8.
- LOCALDATE日は時間情報が含まれていない、それはプラス()メソッドは、日、週、月を高めるために使用され、ChronoUnitクラスは、時間のこれらのユニットを宣言します。LOCALDATEが同じタイプであるため、戻り値は、変数の代入を使用する必要があります。
LocalDate now = LocalDate.now();
LocalDate plusDate = now.plus(1, ChronoUnit.WEEKS);
System.out.println(now);
System.out.println(plusDate);
//结果
2018-06-20
2018-06-27
9.一年一年前か後の日付を計算します
- 過去の日付を算出するマイナス()メソッドを使用して
LocalDate now = LocalDate.now();
LocalDate minusDate = now.minus(1, ChronoUnit.YEARS);
LocalDate plusDate1 = now.plus(1, ChronoUnit.YEARS);
System.out.println(minusDate);
System.out.println(plusDate1);
//结果
2017-06-20
2019-06-20
10. JavaのクロックCLOCK 8
- Javaの8は、タイムゾーン情報にタイムクロックのタイムスタンプを取得するために使用されるクロック・クラス、または現在の日付と時刻を追加します。どこに以前使用System.currentTimeInMillis()とはTimeZone.getDefault()は、使用可能な時計の交換です。
Clock clock = Clock.systemUTC();
Clock clock1 = Clock.systemDefaultZone();
System.out.println(clock);
System.out.println(clock1);
//结果
SystemClock[Z]
SystemClock[Asia/Shanghai]
Javaの日付を判断することで、別の日の前または後にどのように11
- ジャワ8において、LOCALDATEクラスは、日付比較のための2つのメソッドをisBefore()とisAfter()を有しています。isBefore()メソッドを呼び出すときに現在の日付が指定した日付よりも小さい場合、それはtrueを返します。
LocalDate tomorrow = LocalDate.of(2018,6,20);
if(tomorrow.isAfter(now)){
System.out.println("Tomorrow comes after today");
}
LocalDate yesterday = now.minus(1, ChronoUnit.DAYS);
if(yesterday.isBefore(now)){
System.out.println("Yesterday is day before today");
}
領域12と、Java 8の処理
- Javaの8は、日付と時刻を分離し、また、タイムゾーンを分離することだけではありません。特定のタイムゾーンを処理するようするzoneidなどの個々の炭化水素、一連の特定の時間帯での時間を表すZoneDateTimeクラスがあります。これは、以前に行うためにJava 8のGregorianCalendarクラスになっていました。
ZoneId america = ZoneId.of("America/New_York");
LocalDateTime localtDateAndTime = LocalDateTime.now();
ZonedDateTime dateAndTimeInNewYork = ZonedDateTime.of(localtDateAndTime, america );
System.out.println(dateAndTimeInNewYork);
13.固定されているクレジットカードの有効期限のこのタイプを表すために、どのように、答えはYEARMONTHにあり
- 同様のMONTHDAY例と重複イベントをチェックし、YEARMONTHは、クレジットカードの有効期限を表現するための別の組み合わせクラス、FDの成熟度、先物オプションの有効期限です。あなたはまた、月の日数の合計数を取得するには、このクラスを使用することができ、YEARMONTHインスタンスlengthOfMonth()メソッドは、2月の判決で、月の日数を返しますが28日あり、または29日には、非常に便利です。
YearMonth currentYearMonth = YearMonth.now();
System.out.printf("Days in month year %s: %d%n", currentYearMonth, currentYearMonth.lengthOfMonth());
YearMonth creditCardExpiry = YearMonth.of(2018, Month.FEBRUARY);
System.out.printf("Your credit card expires on %s %n", creditCardExpiry);
//结果
Days in month year 2018-06: 30
Your credit card expires on 2018-02
Javaの8に閏年をチェックする方法14
- LOCALDATEクラスは非常に実用的な方法ISLEAPYEAR()この例では、それがうるう年であるかどうかを決定しています。
15.二つの日付と月の間の日数を計算します
- 一般的な操作日が2日、数週間、あるいは数ヶ月間の日数を計算しているがあります。Javaの8は、計算java.time.Periodクラスで行うことができます。次の例では、我々は、昼と将来の1日の間の月数を計算します。
LocalDate date = LocalDate.of(2019, Month.MARCH, 20);
Period period = Period.between(now, date);
System.out.println("离下个时间还有" + period.getMonths() + " 个月");
16.違いは、日付と時刻の情報を含んでいます
-
ジャワ8において、ZoneOffsetクラスは時間帯を表すために使用され、例えば、インドGMTまたはUTC標準の05領域の差:30は、ZoneOffset.of()静的メソッドを、対応する時間帯によって取得することができます。あなたがOffSetDateTimeを渡すことによって、時間差を作成することができ得ればのLocalDateTimeとZoneOffsetオブジェクト。
LocalDateTime datetime = LocalDateTime.of(2014, Month.JANUARY, 14,19,30); ZoneOffset offset = ZoneOffset.of("+05:30"); OffsetDateTime date = OffsetDateTime.of(datetime, offset); System.out.println("Date and Time with timezone offset in Java : " + date);
17.は、Java 8での現在のタイムスタンプを取得します。
- あなたは、Java 8は、現在のタイムスタンプの前に得られたので、今はようやく解放された方法を覚えていれば。インスタントクラスは()staticファクトリメソッドを持っている現在のタイムスタンプを返します。
- 同じタイムスタンプ情報では、このような日付と時刻、およびjava.util.Dateを含んでいます。インスタントjava.util.Date、Date.toInstantに変換されDate.from(インスタント):インスタントクラスは、実際には以前のJava Dateクラス8と同じでない、あなたは、例えばDateクラスと変換のそれぞれのクラスのインスタントの相互変換方法を、使用することができます()Dateクラスのカテゴリを吸い込まインスタントに変換されます。
Instant timestamp = Instant.now();
System.out.println(timestamp);
// 结果
2018-06-20T06:35:24.881Z
18.どのように解析するために、Java 8で定義済みの書式設定ツールを使用するか、フォーマットの日付
- Javaの、日付と時刻の形式の前に世界で8は、ヘルプSimpleDateFormatクラスはスレッドセーフではありません、非常に奇妙ですが、解析および書式日付ときにもローカル変数として面倒です。幸いなことに、スレッドローカル変数は、それがマルチスレッド環境で利用可能になる作るが、これは過去のです。Javaの8は、新しい日付と時刻の書式設定ツールは、スレッドセーフで使いやすいを紹介します。これは、一般的に使用される組み込みの書式設定ツールの数が付属しています。
19. Javaで解決カスタム日付書式設定ツールを使用する方法
- 便利な組み込みの書式設定ツールにもかかわらず、時にはあなたは、特定の日付フォーマットを定義する必要があります。私たちは、毎月、m個のサブ委譲のためのM、代わって以前のようにしてDateTimeFormatter ofPattern()静的メソッドを呼び出し、その例に戻るには任意の形式で渡し、フォーマット文字することができます。フォーマットが標準化されていない場合DateTimeParseExceptionは例外をスローしますが、唯一の書かれたm個のMと、この論理エラーが例外をスローしません。
//DateTimeFormatter 如何使用:
//解析日期
String dateStr= "2018年06月20日";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
LocalDate date= LocalDate.parse(dateStr, formatter);
//日期转换为字符串
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy年MM月dd日 hh:mm a");
String nowStr = now .format(format);
20日のJava 8に文字列を変換する方法
- 特定の形式の文字列を変換する例のLocalDateTime日付。これは、これまででStringにほとんどのJava日の簡単な方法です。次の例では、その日のためにフォーマットされた文字列を返します。そして、前のように、まだあなたがしてDateTimeFormatterインスタンスと、着信フォーマットを作成する必要があるが、それはむしろ、parse()メソッドよりも、呼び出し元の形式()メソッドにあります。このメソッドは、着信日時指定された形式の文字列に変換されます。
LocalDateTime arrivalDate = LocalDateTime.now();
try {
DateTimeFormatter format = DateTimeFormatter.ofPattern("MMMdd yyyy hh:mm a");
String landing = arrivalDate.format(format);
System.out.printf("Arriving at : %s %n", landing);
}catch (DateTimeException ex) {
System.out.printf("%s can't be formatted!%n", arrivalDate);
ex.printStackTrace();
}