2012-07-16 16 views
2

휴대 기기를 구입해야합니다. TimeZone은 Android에서 GMT과 비교합니다. ,Android에서 GMT와 비교 한 시간대 가져 오기

는 미국/로스 엔젤레스,이 시간대의 ID를 반환 GMT-08 :

Calendar c = Calendar.getInstance(); 
TimeZone tz = c.getTimeZone(); 
tz.getID(); 

getID()의 설명은 다음과 같습니다 00 나는 단지 하나 개의 함수가를 반환하지만 String로 볼 수 또는 UTC.

문제는 내가 같은 Integer 3, -5 ... 같은

답변

4

당신은 시간대 getOffset() 값에 따라 차이를 계산 할 수 있어야 볼 것을 얻을 필요가있다 http://developer.android.com/reference/java/util/TimeZone.html#getOffset(long)

+0

+1 답변을 수락하기위한 마지막 한 가지 : 시간대가 GMT -3 인 경우이 숫자는 -10800000이 올 때 마이너스가됩니까? –

+0

그래, 그냥 같은 크기의 음수 값이어야합니다. 이것을 확인하려면 PST 또는 EST와 같은 TimeZone으로 테스트 할 수 있습니다. – Michael

1

TimeZone.getOffset을 사용하십시오. 시간 차이는 일광 절약 시간제로 인해 변경 될 수 있으며 국가 및 연도마다 크게 다를 수 있습니다. 그러므로 일년 내내 오프셋 번호에 의존해서는 안됩니다. 대신 TimeZone 식별자를 사용하는 것이 더 안정적입니다.

+0

그래서 TimeZone 식별자의 문자열을 읽는 메소드를 생성하고 String과 Integer 연산을 사용하여 오프셋을 Integer로 가져 오는 것이 좋습니다. –

+0

아니요,별로 ... 그냥 당신의 질문에 대한 제 대답과 함께 당신에게 한 마디의 충고를하고 싶었습니다. 그 오해를 유감스럽게 생각합니다. – tiguchi

+0

자, 이제 getOffset을 사용했지만 값을 사용하는 방법을 이해하지 못합니까? 내게 1080000을 주었고, 나의 시간은 GMT + 3이었습니다. 그 큰 숫자를 어떻게 번역 할 수 있습니까? –

4
public static String getCurrentTimezoneOffset() { 

    TimeZone tz = TimeZone.getDefault(); 
    Calendar cal = GregorianCalendar.getInstance(tz); 
    int offsetInMillis = tz.getOffset(cal.getTimeInMillis()); 

    String offset = String.format("%02d:%02d", Math.abs(offsetInMillis/3600000), Math.abs((offsetInMillis/60000) % 60)); 
    offset = (offsetInMillis >= 0 ? "+" : "-") + offset; 

    return offset; 
} 
관련 문제