2011-07-29 83 views
1

當我執行在普通的Java和Android的這個代碼,我得到不同的結果:不同日期/安卓

System.out.println(new Date(1311940549187l).toString());

  • 在普通的Java,我得到這樣的輸出:Fri Jul 29 13:55:49 CEST 2011

  • 在Android中,我得到這樣的輸出:Fri Jul 29 11:55:49 GMT+00:00 2011

我知道它與時區有關。但我真的需要得到相同的輸出。如何根據Long值生成Date對象,並在兩種環境中獲得相同的日期?


編輯:我已經使用SimpleDateFormat和兩個日期時間有2個小時的偏移量。請告訴我如何擺脫抵消。

這是我使用的SimpleDateFormat:new SimpleDateFormat("MM-dd-yyyy HH:mm")

回答

4

的日期是在這兩個環境是相同的,但的toString()給出了不同的結果,因爲兩個環境都具有不同的時區設置。

要格式化特定時區的日期,請使用SimpleDateFormat並將時區設置爲特定值(例如GMT)。

UPDATE:

TimeZone gmt = TimeZone.getTimeZone("GMT"); 
SimpleDateFormat format = new SimpleDateFormat("..."); 
format.setCalendar(Calendar.getInstance(gmt)); 
+0

請看到我的編輯 – Joel

+0

它的作品!謝謝! – Joel

1

你可以使用一個SimpleDateFormat並轉換成Java代碼的什麼Android是給你的輸出相匹配。

SimpleDateFormat

,反之亦然(Android的轉換,以匹配JAVA)

Android SimpleDateFormat

+0

請看我的編輯 – Joel

+0

這可能正是莫里斯在他的回答中所說的。 – sealz

1
dFormat = new SimpleDateFormat("MM-dd-yyyy HH:mm") 
TimeZone tz = TimeZone.getTimeZone("GMT:00"); 
dFormat .setTimeZone(tz); 
+0

請參閱我的編輯 – Joel

+0

我編輯了答案 –