2016-10-12 1 views
0

UTC 표준 시간대로 설정된 달력의 인스턴스를 가지고 있는데, UTC 인 서버와 동기화해야하므로 UTC가되어야합니다.Date 객체에 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()); 

편집 :

내가 서버에 날짜 개체를 전달, UTC 표준 시간대 대신 CEST 시간대를 사용합니다.

+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로 날짜가 제공됩니다. mm :

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가 당신에게 날짜를 제공 할 것입니다 SS 형식하지만 당신은 당신의 필요에 따라 다른 형식을 제공 할 수 있습니다.

+0

am/pm 지정자를 포함하지 않으면'hh'를 사용하지 않으실 것입니다. –

관련 문제