2010-07-28 2 views
3

JasperServer 포럼에 게시했지만 일반적으로 StackOverflow에서 더 나은 행운을 봤습니다. 가능한 경우 도와주세요.날짜가 JasperServer에서 프로그래밍 된 것보다 하루 전에 나타납니다

내 가장 큰 단일 불만은 JasperServer 일 때 JasperReport (특히 보고서는 iReport에서 개발 됨)과 다르게 동작한다는 점입니다.

지금보고있는 문제는 날짜가 매개 변수에 입력 한 날짜보다 하루 전 (사실 정확히 정확히 4 시간 전)으로 표시된다는 것입니다.

이 내가 JRXML의 기본 값 표현에 넣어 것입니다 :

((new Date().getMonth()/3) + 1 == 1)? new Date(new Date().getYear(), 0, 1) : 

((new Date().getMonth()/3) + 1 == 2)? new Date(new Date().getYear(), 3, 1) : 

((new Date().getMonth()/3) + 1 == 3)? new Date(new Date().getYear(), 6, 1) : 

new Date(new Date().getYear(), 9, 1) 

이 코드는 제대로 JasperReports의 기본 값 표현 내에서 분기의 시작을 계산하기 위해 노력하고 있습니다. 내가 iReport을 통해 이것을 실행할 때, 나는 아무런 문제도 볼 수 없습니다. 이번 분기에 실행 한 보고서의 경우 2010 년 7 월 1 일을 시작일로보고 있습니다.

2010 년 6 월 30 일 8 : 나는 다른 결과를 얻을 나에게 JasperServer의 형식이 보고서를 실행하고 JasperServer 이메일 출력이 있습니다

나는 "subreport_name의 repo"을 설명하는 JRXML을 수정

: 00 PM

이것은 나에게 버그처럼 보입니다.

+0

. 로그인 할 때 TimeZone이 올바르게 설정되어있는 것 같습니다. – Ramy

답변

1

시간대 문제입니다.

과거 네 시간을 인쇄하는 것 같습니다.

실행중인 서버는 어디입니까?

시간대를 확인할 수 있습니까?

예를 들어이 코드를 살펴보십시오. 시간대에 따라 다른 요일과 달이 인쇄됩니다.

Date date = ((new Date().getMonth()/3) + 1 == 1) ? new Date(new Date().getYear(), 0, 1) 
    :((new Date().getMonth()/3) + 1 == 2) ? new Date(new Date().getYear(), 3, 1) 
    :((new Date().getMonth()/3) + 1 == 3) ? new Date(new Date().getYear(), 6, 1) 
    :new Date(new Date().getYear(), 9, 1); 
System.out.println(date); 

출력 : 목 7월 1일 영국 서머 타임 00시 00분 0초 2010

TimeZone.setDefault(TimeZone.getTimeZone("PST")); 
System.out.println(date); 

출력 수요일 6월 같은 날짜 30 16:00:00 PDT 2010.

비트 해킹의

하지만 당신은 예를 들어 올바른 일 도착 보장하기 위해 하루에 나중에 시간을 설정할 수 있습니다 :

new Date(new Date().getYear(), 3, 1,23,59); 

편집 : 시간을 설정하는

올바른 방법 재스퍼 보고서가 데이터 소스를 통해 전송됩니다.

그냥 문제는 서버가 어떤 시간대, 그래서 그냥 설정되어 있지 날짜 오류의 원인이 기본값을 사용합니다 볼 수 있습니다

mydatasource.setTimeZone(TimeZone.getTimeZone("BST"));

예를

에 대한 보고서에 전달하기 전에 데이터 소스에 setTimeZone() 메서드를 호출합니다. 말의 입에서

+0

거의 확실하게 문제입니다. 그러나 Java 응용 프로그램 에서처럼 TimeZone을 설정할 수는 없습니다. – Ramy

+0

발견했습니다 : http://jasperforge.org/plugins/espforum/view.php?group_id=112&forumid=102&topicid=47753 이 점을 : http://jasperforge.org/plugins/espforum/ view.php? group_id = 112 & forumid = 102 & topicid = 45272 – Ramy

+0

사실상 다음과 같습니다 : JasperServer에서 사용되는 데이터 소스의 시간대 설정을 비워서 문제를 해결했습니다. 분명히 이것이 데이터 소스 config에 공백으로 남겨두면, 현지 시간대를 사용하게 될 것입니다 (그리니치 표준시에서 7-8 시간 이후로, 시간차 계산에서 날짜가 하루 쉬었습니다). JasperServer에서 사용되는 데이터 소스의 시간대 설정을 지우려면 어떻게해야합니까? – Ramy

관련 문제