2016-10-12 3 views
0

У меня есть экземпляр Календаря, настроенного с часовым поясом UTC, мне нужно быть UTC, потому что мне нужно синхронизировать с сервером, который является UTC.Calendar.getTime() to Date object

Мне нужно создать объект Date из этого Календаря, и я использую Calendar.getTime().

Но когда я пытаюсь распечатать объект Date, когда я вижу его с другим TimeZone (вместо CEST от UTC)

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

EDIT:

Когда я передать объект даты на сервере, Я получаю его с часовым поясом 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); 

Это обеспечит вам дату в гггг дд, MM чч: мм: сс формат, но вы можете предоставить другой формат в соответствии с вашими потребностями.

+0

Вы почти наверняка не хотите использовать 'hh', если вы также не включаете спецификатор am/pm. –