2017-07-19 49 views
0

我正在構建一個簡單的組織器應用程序,並試圖選擇一個類來保留我的日期和時間在對象中。我應該使用哪些類?我已經看到,Date類中的很多方法已被棄用。也許Calendar呢?推薦一些。謝謝。在Java中使用哪個類保留時間和日期

+1

如何在'java.time類。*'包? – Kayaman

+0

新的?但是如何支持後向? –

+3

爲什麼你需要向後支持? –

回答

1

這取決於你想要什麼樣的日期/時間。

  • System.currentTimeMillis() - 這會給你表示爲UNIX紀元爲後毫秒數的簡單的數值。
  • 如果你想年月日的格式,你可以使用其中之一:

    new Date() - 這將給你一個與當前的日期/時間初始化的Date對象。由於API方法大多有缺陷,因此不推薦使用。

    new org.joda.time.DateTime() - 這會給你一個約會時間對象 用當前日期/時間初始化。喬達時間包括一個偉大的API用於做任何涉及時間點計算的時間點。但是,對於Java 8,這不再是真的

    Calendar.getInstance() - 這會爲您提供一個使用默認語言環境和TimeZone在當前日期/時間初始化的Calendar對象。

  • 如果你只需要一個簡單的方法來輸出格式YYYY.MM.DD-HH.MM.SS時間戳 - 一個很常見的情況 - 然後使用此:

    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()); 
    
  • 瞬間 - 如果您希望在業務邏輯和數據存儲/交換方面做任何工作,則應該採用UTC來完成,這是最佳做法。

    Instant instant = Instant.now(); 
    

您還可以調整即時到其他時區:在納秒使用即時類獲得當前時刻。應用ZoneId對象以獲取ZonedDateTime。

ZoneId zid = ZoneId.of("Europe/Paris"); //create zone id 
ZonedDateTime zdt = instant.atZone(zid); //pass zone id get the adjusted zoned date time. 
  • LocalDate - 這個類表示沒有時間一天和不同時區的日期,唯一的價值。

    ZoneId zid = ZoneId.of("Europe/Paris"); 
    LocalDate today = LocalDate.now(zid); //Always pass in a time zone 
    
+3

請不要向年輕人講授過時課程「日期」和「日曆」,至少不是第一個選項,也不是沒有警告或保留。 「即時」,「LocalDate」,「ZonedDateTime」和朋友都好多了。 –

相關問題