2016-10-12 45 views
0

我已經設置了UTC時區的日曆的實例,我需要UTC becouse我必須與UTC服務器同步。Calendar.getTime()到日期對象

我需要從這個日曆創建一個Date對象,我使用Calendar.getTime()。

但是,當我試圖打印出日期對象我看到它與不同的時區(的CEST代替UTC)

TimeZone timeZone = TimeZone.getTimeZone("UTC"); 
Calendar cal = Calendar.getInstance(timeZone); 
cal.setTime(timeMillisecond); 
Date d = cal.getTime(); 
Log.d("TAG", d.toString()); 

編輯:

當我傳遞的日期對象到服務器,我使用CEST時區代替UTC時區。

+0

「Date」對象不具有*時區。它只是代表一瞬間。 'Date.toString()'顯示即時在系統本地時區。 –

+0

我編輯了這個問題。 – Stefano

+0

不幸的是,這不是一種有用的方式。我們不知道如何將日期傳遞給服務器,但是我們可以*看到你記錄調用Date.toString()的結果 - 參見我以前的評論。請注意,使用'Calendar'的代碼沒有做任何有用的事情,但是 - 你已經有效地得到了'Date d = new Date(timeMillisecond);'。 –

回答

0

您可以使用sdf,設置其時區並相應地解析它。

SimpleDateFormat sdf = new SimpleDateFormat(
      "yyyy-MM-dd HH:mm:ss"); 
sdf.setTimeZone(TimeZone.getTimeZone("Etc/UTC")); 

try { 
          Date dt = sdf.parse(sdf.format(Calendar.getInstance())); 
         } catch (ParseException e) { 
          e.printStackTrace(); 
         } 

這對我有用。

0

請嘗試下面的代碼,它會爲您提供UTC的日期。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy dd,MM hh:mm:ss", Locale.getDefault()); 
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 
String utcTime = dateFormat.format(new Date(timeMillisecond)); 
Log.d("TAG", utcTime); 

它會爲您提供的日期在YYYY DD,MM HH:MM:SS格式,但您可以根據您的需要提供其它格式。

+0

除非還包含am/pm說明符,否則幾乎肯定不會使用'hh'。 –