2013-01-16 65 views
0

我使用日期類功能「代碼不贊成」使用Java

Date date = new Date(); 
int t=date.getHours(); 

獲得當前的小時和Eclipse不斷抱怨代碼棄用。一切工作都很好,但它一直在警告我,是否有理由改變它?有沒有其他方法來獲得當前時間?

+6

您是否閱讀過[javadoc](http://docs.oracle.com/javase/7/docs/api/java/util/Date。HTML#調用getHours%28%29)? *從JDK版本1.1開始,由'Calendar.get(Calendar.HOUR_OF_DAY)替換'。* – assylias

+2

很高興看到使用StackOverflow的人,但是當人們發佈甚至是微不足道的問題時,甚至沒有做出太多的努力,我覺得有點令人沮喪如閱讀javadoc或做一個非常簡單的網絡搜索。 – pap

+0

我只是不知道在編程上下文意味着什麼不推薦使用.. – aclokay

回答

1

庫的某些部分被標記棄用當一個問題被發現了他們,但設計師決定對現有部分的改進可能會破壞已經依賴於許多現有方案舊的行爲。

因此,他們保留現有部分,至少在一段時間內(保持現有源編譯的能力直到他們被更新),而通常提供替代方案。

現在,關於Java的時間,大多數人推薦Joda time

+0

謝謝!最後一個答案回答我的問題,而不只是提到它......! – aclokay

0

Date#getHours被棄用:

從JDK 1.1版,用Calendar.get(Calendar.HOUR_OF_DAY)代替。

1

如果你看一下java.util.Date API

getHours()是一種過時的方法

已過時。從JDK 1.1版開始,替換爲 Calendar.get(Calendar.HOUR_OF_DAY)。

+0

我想OP是指java.util.Date,而不是java.sql.Date – assylias

+0

@assylias哦耶,編輯它,順便說一句java.sql.Date的getHours ()也不推薦使用。:) – PermGenError

0

改變的原因是過時的代碼是「標」,在未來的版本中刪除,因此,如果您打算保持它隨着時間的推移,你不應該使用過時的方法,你的代碼。
至於什麼做的就是一小時,從日期的Javadoc:

As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY). 
0

Date.getHours被棄用的JDK 1.1版本。您應該使用java.util.Calendar.get(Calendar.HOUR_OF_DAY)代替:

Calendar c = Calendar.getInstance(); 
int t = c.get(Calendar.HOUR_OF_DAY); 
1

你應該改變它的原因是java.util.Date以許多微妙的方式被打破。您的代碼可能在某些情況下工作,並在其他時間失敗(例如,當您在具有不同時區的計算機上運行它時,當黑客攻擊您的應用程序,當有人與序列化對象混淆時,...)

2013年,您不應再使用java.util.Date。如果您必須使用Calendar,或者更好joda-time library

+2

從2013年9月起,切換到Java 8並享受新的Joda-like Date API ;-) – assylias