2015-01-07 4 views
1

자바에서 저는 영국에서 시간을 다운로드하고 저는 토론토에 있습니다. 나는 시간대를 가져 와서 변환 된 날짜 객체를 변경하려고합니다. 그러나 작동하지 않습니다.Java 표준 시간대가 작동하지 않습니다.

public static Date getDateFromSQLDate(String sqldate) { 
    try { 
     DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); 
     Date date = (Date) formatter.parse(sqldate); 

     TimeZone tz = TimeZone.getDefault(); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTime(date); 
     calendar.setTimeZone(tz); 
     return calendar.getTime(); 

     //return date; 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

아무도 잘 모르는가요?

감사합니다.

답변

2

DateFormat은 토론토 일 가능성이 가장 높은 시스템의 기본 시간대를 사용합니다. 당신이해야 할 일은 다음과 같습니다 :

DateFormat formatter = ... 
formatter.setTimeZone(TimeZone.getTimeZone("Europe/London")); 
Date date = (Date) formatter.parse(sqldate); 
return date; 

또는 "영국"시간대에 적용되는 표준 시간대 식별자. 여기에 지원되는 식별자 이름 목록을 볼 수 있습니다 : http://en.wikipedia.org/wiki/List_of_tz_database_time_zones

Date 객체 (또는 java.sql.Date) 에는이라는 시간대 정보가 저장되지 않습니다. 당신이 할 수 없기 때문에 Date 객체의 시간대를 바꾸고 싶다고 말하는 것은 전혀 이해가되지 않습니다.

당신이 할 수있는 일은 시간대를 분석하거나 Date 개체의 형식을 지정하는 것입니다.

+0

영국 시간은 토론토보다 5 시간 앞서고 유럽/런던 맞습니까? – omega

+0

겨울철에는 영국 시간이 5 시간 앞당겨 지지만 일광 절약 시간 조정에 따라 다른 시간으로 4 일 수 있습니다. – gerrytan

관련 문제