2014-03-31 5 views
4

내 Android 애플리케이션 서버에서 다음과 같은 형식 (yyyy-MM-dd HH:mm:ss)의 날짜를 UTC (으)로 반환하고 해당 시간을 사용자의 TimeZone으로 변환해야합니다. 예 : CST, IST. UTC 시간을 다른 표준 시간대 ("CST", "IST")로 변환하는 방법

는 다음 코드를했다하지만, 올바른 방법으로 시간대 변환을 수행하기 위해 저를 도와주십시오 올바른지 여부를 알고 않습니다.

내가 JSON 문자열로 UTC 날짜를 얻고 재 포맷 문자열은 정말 당신이 무슨 말을 하려는지 경우

private static Date utcDate; 
private static DateFormat expireFormat = new SimpleDateFormat(
     "yyyy-MM-dd HH:mm:ss"); 

     try { 
      expireFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 
      utcDate = expireFormat.parse("2014-04-01 10:32:00"); 
      System.out.println(TimeZone.getDefault().getID()); 
      expireFormat.setTimeZone(TimeZone.getTimeZone(TimeZone.getDefault().getID())); 
      System.out.println(expireFormat.format(utcDate)); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

    output of the code: 
    Asia/Calcutta 
    2014-04-01 16:02:00 
+0

에는 TimeZone.getDefault(). getOffset (now.getTime()), 현재 사용자의 현재 시간이 긴 경우, GMT 오프셋 장치의 시간대를 제공한다. – mraviator

답변

4

전체적인 접근 방식을 사용자의 시간대 형식으로 변환 안드로이드 측면을 보여주는 확인입니다 도망.

  1. SimpleDateFormat이 스레드 클래스는 아니지만

    은 몇 가지 문제가 있습니다. 그것을 서버 내부의 정적 필드로 설정하는 것은 문제입니다!

  2. 과 동일 # 1 중간 Date 객체를 보유하는 정적 필드를 사용하여 관련.

  3. 는 "CST"중국 표준 시간인가? 중부 표준시 (미국 또는 호주)? 쿠바 표준시? 세 문자 약어 TimeZone은 일반적으로 나쁜 소식입니다. 가능한 경우 올슨 이름 또는 별칭을 사용해보십시오.

  4. 이 서버 측 또는 안드로이드인가? 서버라면 DateTime 처리를위한 새로운 Java 8 API의 이점을 누릴 수 있습니다.

+0

내 업데이트 된 코드를 확인하십시오. 대신에 "CST"를 사용하는 대신 시간대를 사용하여 메소드 및 변환을 Android 측에서 수행 할 것입니다. –