2013-12-18 2 views
0

개요를 제공하기 위해 우리는 하루 종일 트랜잭션을받는 MDB 응용 프로그램을 제공합니다. 피드의 열 중 하나가 ddmmyyyy hhmiss 형식의 날짜입니다. SimpleDateFormat (java api)를 통해 파싱하여 테이블에 삽입 할 날짜 객체의 문자열을 파싱 할 수 있습니다.문자열 동작에 이상한 간단한 날짜 형식

어떤 경우에는 내 날짜가 이전 날짜로 이동되는 경우가 있습니다. 관측 결과 5 ~ 6 시간 뒤로 이동했기 때문에 거래가 BVT가되지는 않았다. 예 : 거래 중 하나가 9 월 24 일 12:01 GMT 기준으로 도착했지만 테이블에는 9 월 23 일 오후 7:30에 삽입되었습니다.

서버가 시카고에 있다는 사실을 알려드립니다. 그래서 런던과 시카고 사이에 거의 5-6 시간의 시간차가 있기 때문에 서버 시간을 고려하고 있습니까?

코드 조각은 다음과 같습니다 :

SimpleDateFormat lDtFormat = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss"); 
Timestamp lDtmp = new java.sql.Timestamp(lDtFormat.parse(strParseString).getTime()); 

이제 내 질문에 내가 생성자에 로케일을 전달하여 위의 코드를 변경해야한다.

SimpleDateFormat lDtFormat = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss",Locale.UK); 

위의 코드 스 니펫이 문제를 해결할 수 있습니까?

로케일을 설정 한 후 시간과 날짜를 변환하지 않습니까?

답변

1

SimpleDateFormat의 생성자에서 로컬을 명시 적으로 부여하는 것만으로는 충분하지 않습니다. 그 목적은 주로 "March"(영어), "Maart"(네덜란드어)와 같은 현지화 된 문자열의 서식 지정 또는 구문 분석을 지원하는 것입니다.

또한 SimpleDateFormat의 시간대를 설정해야합니다. 여기서는 아마도 런던의 시간대 이 같은 :

lDtFormat.setTimeZone(TimeZone.getTimeZone("Europe/London")); 

서버의 시간대가 더 나은 국제 날짜와 시간 교환의 시나리오에서 UTC ("GMT")로 구성 할 수 없습니다해야하는 경우도 확인해야합니다.