2013-07-16 3 views
0

나는 9999-12-30 18:30:00.0이 방법의 입력을 통과 다음 코드다른 결과가

public String getDate(Date date) throws Exception{ 

     String finalDate = ""; 

     SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy"); 
     finalDate = formatter.format(date); 

     return finalDate; 

} 

있습니다. 내 실제 환경에서

결과는 다음과 같습니다 12/30/9999

내 로컬 환경에서 결과는 다음과 같습니다 12/31/9999

는 어떤 행동이 이상한 이유가 될 수 있습니다. 미리 감사드립니다 ..

+1

은 아마 시간대 문제가, 당신이'SimpleDateFormat'을 만들 때'Locale'를 제공하기 위해 시도해야 모든 환경의 formatter.setTimeZone ("UTC")에 대한 시간 영역의 문제를 방지합니다. – LaurentG

+1

7986 년에만 일어날 수있는 버그를 찾고 계십니까? ';)' – sp00m

+0

지역과 실제 환경의 주요 차이점은 무엇입니까? OS, 서버, ... –

답변

2

예를 들어, UTC를 특정 시간대를 사용하도록에 dateformat을 강제로 실제 환경과 지역

+0

지금해야 할 일 – PSR

+0

또는 두 환경 모두에서 시간대를 하나로 설정하거나 코드에서 특정 시간대를 사용하도록 코드를 설정하십시오. – Lugaru

+0

@PSR 라이브 환경의 시간대가있는 포맷터로 시간대를 설정해야합니다. – sanbhat

1

사이의 시간대 차이가 있기 때문에, 당신은 사용할 수 있습니다

SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy"); 
formatter.setTimeZone(TimeZone.getTimeZone("UTC")); 
0

@ psr 귀하의 로컬 서버가 인도에 있으며 생산량이 미국에 있다고 언급 했으므로 ...

시간대가 문제이므로이 문제가 발생합니다.

프로덕션 서버가 미국에 있기 때문에 시도해보십시오.

0

java.util.Date에는 표준 시간대 개념이 없습니다. 나는 그 사실을 거의 모르는 사람들이 늘 놀랍다.
응용 프로그램에서 통합 된 결과를 얻으려면 구문 분석 할 때와 인쇄 할 때 시간대를 사용해야합니다.
@assylias가 말했듯이 이것을 달성하기 위해 날짜 포맷터의 시간대를 설정할 수 있습니다.

+0

Oracle에서 날짜 필드를 읽거나 쓸 때주의하십시오. http://beansgocrazy.blogspot.com/2013/05/how-to -read-dates-oracle-database.html – n0rm1e

0

확실히 시간대 형식. SimpleDateFormat 대신 JodaTime을 사용하는 것이 좋습니다. 또한

당신은

관련 문제