2016年6月27日 星期一

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

首先是我需要使用Java來取得現在時間,Java裡和時間相關的Class有好幾個,看了看網上的資訊後我決定使用java.time來實作。
  1. import java.time.*;
  2.  
  3. public class MainProcess{
  4.  
  5.     public static void main(String[] args)
  6.     {
  7.         LocalDateTime currentDateTime = LocalDateTime.now();
  8.  
  9.         System.out.println( currentDateTime );
  10.     }
  11. }

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

LocalDateTime的結果並不包含時區,如果要直接取得時間 + 時區的結果,可以使用ZonedDateTime的Class。
  1. import java.time.*;
  2.  
  3. public class MainProcess{
  4.  
  5.     public static void main(String[] args)
  6.     {
  7.         ZonedDateTime currentDateTime = currentZoneTime.now();
  8.  
  9.         System.out.println( currentZoneTime );
  10.     }
  11. }

如果是想要單純取得時區,可以使用ZonedDateTime下的一些方法,通常可以取得的結果有兩種:時區的區域名稱,和時區的時差數值。
  1. import java.time.*;
  2.  
  3. public class MainProcess{
  4.  
  5.     public static void main(String[] args)
  6.     {
  7.         ZonedDateTime currentDateTime = currentZoneTime.now();
  8.  
  9.         System.out.println( currentZoneTime.getZone() );
  10.         System.out.println( currentZoneTime.getOffset() );
  11.     }
  12. }

然後是如果執行程式時需要延遲一會兒,有Thread.sleep()和TimeUnit.sleep這兩個用法,這邊我選擇TimeUnit.sleep,因為有比較完整的用法,還可分為從TimeUnit.DAYS到TimeUnit.NANOSECONDS各種不同時間單位的使用方式,這邊使用TimeUnit.SECONDS來實作。
  1. import java.time.*;
  2. import java.util.*;
  3. import java.util.concurrent.*;
  4.  
  5. public class MainProcess{
  6.  
  7.     public static void main(String[] args) throws InterruptedException
  8.     {
  9.         for( int i = 0; i < 10; i++ )
  10.         {
  11.             TimeUnit.SECONDS.sleep( 1 );
  12.  
  13.             System.out.println( LocalDateTime.now() );
  14.         }
  15.     }
  16. }

沒有留言:

張貼留言