2013-03-22 21 views
6

在Java中表示時間的正確方法是什麼?如何在Java中表示一天中的時間(即19:00)?

例如:09:00,19:30,等等

基本上,這是一天未鏈接到實際日期/天的時間。

+2

你聽說過[SimpleDateFormat的(http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat html的)? – 2013-03-22 14:48:56

+1

使用[Joda Time](http://joda-time.sourceforge.net/)庫中的'LocalTime'。 – Jesper 2013-03-22 14:49:21

+1

@ Eng.Fouad:這個問題根本沒有提到解析或格式化文本。它只是談論表達價值的最佳方式。 – 2013-03-22 14:52:15

回答

10

你已經用jodatime標記了這個。

用於存儲一天中的時間的喬達時間類型是org.joda.time.LocalTime。見喬達時間API documentation

+0

@jarnbjo正如API文檔所說,'LocalTime'代表沒有時區的時間,所以它與DST更改沒有任何關係。這只是一天中的某個時間,而不是任何特定的一天。喬達時間有許多不同的日期和時間類別用於不同的目的。 – Jesper 2013-03-22 15:12:57

+0

我同意喬達有很多課程,他們大多同樣記錄不完善。 LocalTime的API文檔還提到「本地時間計算是使用Chronology進行的,這個時間表將在內部設置爲所有計算的UTC時區」,這部分與您的API文檔片段相矛盾。因此,即使LocalTime不直接引用時區,它也會引用時間順序,而且時間順序會引用UTC。這個年表的作用是什麼,爲什麼它提到如果LocalTime是TZ不可知的,那麼這個年代將被設置爲UTC? – jarnbjo 2013-03-22 15:34:13

-3

通常,當不需要顯示時,使用

請參閱System.currentTimeMillis()。

+2

System.currentTimeMillis將是一個非常糟糕的方式來表示一天中的時間 – 2013-03-22 14:51:06

+0

正如我所說 - 當它不意味着顯示。我認爲'沒有日期'的意思是沒有java.util.Date。所以,有點太快,給我不好的分數,不是嗎? :-) – 2013-03-22 14:56:44

+0

_例如:09:00,19:30等。他希望以沒有日期的可讀格式顯示時間。 – 2013-03-22 15:00:49

0

試試這個:

Calendar cal = Calendar.getInstance(); 

     cal.get(Calendar.HOUR_OF_DAY); 
     cal.get(Calendar.MINUTE); 
-4

像Eng.Fouad建議,你還是應該使用一個Date對象。這樣您仍然可以訪問存在於Date對象中的所有實用程序。無論何時出現,只需忽略它的日期部分。

Date date = new Date(); 
DateFormat df = new SimpleDateFormat("hh:mm"); 
String timeOfDay = df.format(date); // ex: "18:00" 

或者要創建一個特定的時間

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.HOUR_OF_DAY, 18); 
cal.set(Calendar.MINUTE, 00); 
DateFormat df = new SimpleDateFormat("hh:mm"); 
String timeOfDay = df.format(cal.getTime()); // "18:00" 
+6

不,你絕對應該*不*使用'Date'對象。這是錯誤的表示。 「日期」對象代表即時時間,就這些。 (這個名字很糟糕。)Joda Time在這種情況下有一個*特別的類型 - 這是正確的方法。由於沒有給出足夠的類型來表示在日期/時間工作中自然發生的不同類型的值,所以Java API基本上被打破了。另外請注意,如果你使用'SimpleDateFormat',你需要更加註意模式 - 當你使用12小時時鐘時,你提供的模式永遠不會產生「18:00」。 – 2013-03-22 14:55:31

相關問題