2016年6月27日 星期一

Java的現在時間取法,和延遲用法

首先是我需要使用Java來取得現在時間,Java裡和時間相關的Class有好幾個,看了看網上的資訊後我決定使用java.time來實作。
import java.time.*;

public class MainProcess{

    public static void main(String[] args)
    {
        LocalDateTime currentDateTime = LocalDateTime.now();

        System.out.println( currentDateTime );
    }
}

要注意的是,currentDateTime只是儲存了LocalDateTime.now()所取得的時間值,故一會兒後再使用currentDateTime的話,裡面的時間值可不會自動改變喔。每次要取得最新的"現在時間值"的話,就必須反覆使用LocalDateTime.now()。

LocalDateTime的結果並不包含時區,如果要直接取得時間 + 時區的結果,可以使用ZonedDateTime的Class。
import java.time.*;

public class MainProcess{

    public static void main(String[] args)
    {
        ZonedDateTime currentDateTime = currentZoneTime.now();

        System.out.println( currentZoneTime );
    }
}

如果是想要單純取得時區,可以使用ZonedDateTime下的一些方法,通常可以取得的結果有兩種:時區的區域名稱,和時區的時差數值。
import java.time.*;

public class MainProcess{

    public static void main(String[] args)
    {
        ZonedDateTime currentDateTime = currentZoneTime.now();

        System.out.println( currentZoneTime.getZone() );
        System.out.println( currentZoneTime.getOffset() );
    }
}

然後是如果執行程式時需要延遲一會兒,有Thread.sleep()和TimeUnit.sleep這兩個用法,這邊我選擇TimeUnit.sleep,因為有比較完整的用法,還可分為從TimeUnit.DAYS到TimeUnit.NANOSECONDS各種不同時間單位的使用方式,這邊使用TimeUnit.SECONDS來實作。
import java.time.*;
import java.util.*;
import java.util.concurrent.*;

public class MainProcess{

    public static void main(String[] args) throws InterruptedException
    {
        for( int i = 0; i < 10; i++ )
        {
            TimeUnit.SECONDS.sleep( 1 );

            System.out.println( LocalDateTime.now() );
        }
    }
}

沒有留言:

張貼留言