Java 8新機能の新しい日時API

2040 ワード

しばらく時間のフォーマットを使って変換する時、いつもJavaのDate類を感じて、表現するのはとても力がなくて、いくつかもともととても簡単な問題を処理することに対してしかし確かにとても複雑なことを感じて、後で他の人の話を聞いてJava 8の時間の日付の処理の新しい特性について理解することができますと言います.では、一緒に見てみましょう.
まず、Durationオブジェクトを見てみましょう.1つのDurationオブジェクトは、2つの瞬時点間の時間量を表します.
例を挙げて説明します.
package Time;

import java.time.Duration;
import java.time.Instant;

public class DurationTest {
	public static void main(String[] args) {
		Instant intance = Instant.now();
		show();
		Instant instant2 = Instant.now();
		Duration time = Duration.between(intance, instant2);
		System.out.println(time.toMillis());
		
	}
	public static void show(){
		for(int i=0;i<1000;i++){
			if(i/80==0){
				System.out.println("I Love You");
			}
			
		}
	}

}

計算アルゴリズムの時間のかかる問題でこのInstantを用いてタイムスタンプを取得し、DurationのToXX法で必要な方法を取得することができます.System.currentTimeMillis()は必要ありません.
そして最も重要なのはDurationが私たちに多くの方法を提供してくれることだと思います.必要に応じてAPIを具体的に見ることができます.例えば、現在のInstantやDurationを増やしたり、減らしたりすることができます.
次に、ローカル日付を見てみましょう.
新しい時間APIでは、2つの時間フォーマットが提供され、1つは通常のフォーマットであり、もう1つはタイムゾーン付き時間である.
LocalDateは、年、月、当月の日数を持つ日付です.LocalDateを作成するには、静的メソッドnow、またはofを使用します.LocalTimeは、現在の時間を取得するクラスです.同じ金額でLocalDateを作成するには、静的メソッドnow、またはofを使用します.たとえば、次のようにします.
public class LocalDateTest {
	public static void main(String[] args) {
		LocalDate time = LocalDate.now();//       
		LocalDate time2 = LocalDate.of(2016, 12, 5);//        
		System.out.println(time);
		System.out.println(time2);
	}

}
public class LocalTimeTest {
public static void main(String[] args) {
	LocalTime t = LocalTime.now();
	System.out.println(t);
}
}

LocalDateでは、直接的な増減など、日付に対するAPIの操作を使用して、両方のLocalDateを比較することができます.具体的にはAPIと自分のニーズを見なければなりません.
では、以前のDateにどのように変換するか、.ToInsant()メソッドを使用してInsant関数を作成することができます.
また、Javaには日付と時間をフォーマットして解析する新しいクラスがあります.DateTimeFormatterです.
タイムゾーン付きの日付を取得するクラスはZonedDateTimeで、使い方も大同小異で、具体的に見ればわかります.
個人的にはJavaは時間のサポートがますますよくなってきたと思います.上のクラスを通じて、私たちが必要とする時間フォーマットを簡単に得ることができます.以前のようによくこの問題のために頭が痛いわけではありません.