Lotus Java/CORBA 클래스를 사용하여 임의의 시간대로 Domino DateTime 오브젝트를 작성하려고합니다.Lotus Java/CORBA를 사용하는 TimeZone 문제점 session.createDateTime (Calendar)
나는 정수 시간 수의 기본 오프셋을 갖는 모든 시간대에서 성공한 것처럼 보입니다. 분수령 시간대, 특히 30 분의이란 시간대 인이란, 인도, 스리랑카 또는 네팔과 같이 흔치 않은 45 분의 오프셋이 적용됩니다. 나는 정수 시간대로 다시 계산되는 DateTime을 반환한다.이란 표준 시간대 (+03 : 30, 1 시간 DST)에서 18:45를 묻는 것은 나에게 18:45를 나타내는 DateTime을 제공한다. +03 : 00 오프셋.
이것은 실제로 표시된 순간을 변경 시키며,이 날짜를 약속에 기록 할 때 Notes 클라이언트가 날짜가 다른 시간대로 작성된 방법을 사용자에게 설명하는 결과를 초래합니다.
노트 자체는 제공된 시간대에 약속을 쓰는 데 아무런 문제가 없습니다. 물론 과정은 내가 사용하고있는 것보다 다른 연결을 통해 이루어 지지만.
자세한 내용은 현재 Domino 8.5.1 및 일치하는 클라이언트를 사용하고 있으며 여러 버전의 NCSO.jar 파일을 사용하여 문제를 확인했습니다.
Java/CORBA 클래스는 날짜를 만드는 세 가지 메소드 만 제공하며, 모두 세션 객체에 있습니다. 이러한 메소드의 1 개 (살) 만, 타임 존 대응 (java.util.Calendar 오브젝트의 수락)으로서 문서화되고 있습니다. 나는 domino Time/DateTime 필드를 업데이트하는 데 필요한 DateTime을 만드는 다른 방법을 알고 있습니다.
DIIOP 연결 로깅은 메서드 호출 패턴을 생성하며, 아래에서 다시 작성하여 DateTime 생성을 자세히 설명합니다.
전제 조건은 '세션'이라는 오픈 도미노 세션 객체입니다. 이 세션은 UTC + 08 : 00의 Perth에 위치한이 예제의 목적을 위해 세션을 비뚤어 진 시간 구성 요소의 소스로 제거합니다.
Domino와 함께 Java/CORBA 라이브러리를 사용하는 사람이 비슷한 문제를 겪었고이를 수정하기 위해 취해진 조치가 어떤 것인지 특히 관심이 있습니다. 또는 내가 알지 못하는 관련 방법에 관한 정보는 감사하겠습니다.
// first block creates a Calendar for 2010-07-21T10:15:00 in the Iran time zone.
// so far, nothing domino specific. The resulting calendar is verified as correct.
TimeZone tz = TimeZone.getTimeZone("Asia/Tehran");
Calendar calendar = Calendar.getInstance(tz);
calendar.setTimeZone(tz);
calendar.set(2010, 6, 21, 10, 15, 0);
// first call
DateTime result = session.createDateTime(calendar);
// second call
System.out.println(result.getTimeZone());
// third call
System.out.println(result.getZoneTime());
위의 코드의 출력 및 추적 : (긍정적
first call to Domino produces the following DIIOP trace
2010-07-12 23:22:28 DIIOP Session SN000472537: Executing createDateTimeObject
2010-07-12 23:22:28 DIIOP Session SN000472537: Executing setZoneDateTimeFromJava
2010-07-12 23:22:29 DIIOP Session SN000472537: Executing getDateTime
second call to Domino, on the resulting DateTime object to retrieve the integer offset. We expect -3003, which is how Domino encodes 03:30 east of the prime meridian. Instead we recieve -3, which encodes 03:00 east of the prime meridian.
second call to Domino produces the following trace
2010-07-12 23:22:58 DIIOP Session SN000472537: Executing getDateTime
second call produces the following stdout output
-3
third call to Domino to retrieve the printable time as Domino knows it.
third call produces the following DIIOP trace.
2010-07-12 23:23:14 DIIOP Session SN000472537: Executing getZoneTime
2010-07-12 23:23:14 DIIOP Session SN000472537: Executing getDateTime
third call results in the following stdout output 2010-07-21 10:15:00 ZE3
는 "ZE3"시간대 도미노을 명확히하려면 일반 시간대에이 형식을 사용하며,이 지역 동쪽 "으로 읽을 수있다) offset 03:00 "입니다. A, B 또는 C는 15, 30 또는 45 분 오프셋의 접미어가 붙습니다. 따라서 예상 오프셋 +03 : 30은 "ZE3B"영역의 날짜가되어야하지만 불행히도 그렇지 않습니다.
이전에는 알지 못했습니다. 꽤 큰 누락입니다. 스리랑카 나 네팔의 시간축 문제는 지구 적으로 얼마나 큰 영향을 줄지 모르겠지만 인도는 엄청난 시장이며 API에 큰 결함이 있음을 보여줍니다. 나는 주변에 일이 있는지보기 위해 보았지만, 나는 그 순간에 하나를 생각해 낼 수 없다. – Kerr