2012-10-23 53 views
1
Date date = new Date(); 
int lastMonth = date.getMonth(); 
int lastYear = 1900 + date.getYear(); 

我有這樣的代碼在我的GWT項目,但很多java.util.Date的方法已經被淘汰,22/33方法。
所以我想使用Calendar/GregorianCalendar:它不起作用。它說有一個缺失的軟件包。如何更換Date對象

用一個沒有廢棄的代碼替換這些代碼行的最佳做法是什麼?

+0

你在具體談論客戶端代碼,對吧? – Dunes

+0

@RohitJain GWT是一個來自Google的工具包,它將Java轉換爲JavaScript,以便服務器和客戶端都可以使用相同的語言編寫。客戶端代碼庫(轉換爲javascript的代碼庫)相當有限,例如Calendar類不可用。 – Dunes

+0

@Dunes。謝謝(你的)信息。沒有想法。 –

回答

3

不要。

java.util.Calendar幾乎不可能仿真,而且開銷太高。 java.util.Date儘管與理想情況相差甚遠,但它最接近於JavaScript的Date,所以這是您應該在GWT世界中使用的一個。

JSR 310是有前途的(不知道它可以如何被模擬,雖然與java.util.Date相比有多少開銷),但還沒有。還有Joda Time(來自同一作者的JSR 310,JSR 310旨在將Joda Time帶到JDK並修復其早期設計錯誤),但是大多數GWT端口早已被廢棄。

最後:使用java.util.Date

而且,如果您發現棄用警告令人厭煩,那麼可以將其禁用:@SuppressWarnings("deprecated")

+0

Dommage!我將添加此@SuppressWarnings(「已棄用」)。 GWT只在法國使用?每個我都有關於GWT的東西,只能從法語獲得答案...:oD – Manu

0

java.util.Date不被棄用!無可否認,很多方法(比如getMonth和getYear)都是我儘量避免使用的。在GWT的情況下,您可以使用類似DateTimeFormat的日期格式和解析。

+0

'不推薦使用java.util.Date':只需看看http://docs.oracle.com/javase/1.5.0/文檔/ API/index.html的?爪哇/ SQL/Date.html。當然,這個課程並不被棄用,但是22/33的方法是不推薦的,對我來說這意味着:「不要使用這個課程,不要再用這個課程」。 – Manu

+0

我的意思是http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Date.html – Manu

+0

java.util.Date仍然在很多地方用作方便的時間戳封裝。例如java.sql.Timestamp是Date的一個子類。格式化/操作API日期包含已被棄用,但該類絕對沒有。 –