2013-01-11 2 views
0

1981 년 이전의 입력 컨트롤에서 여름 날짜가 다시 계산됩니다 (일광 절약 시간제라고 생각합니다).날짜 항목의 일광 절약, 일광 절약

예 : 나는 27.8.1960을 입력한다 - 저장 후 나는 26.8.1960을 얻는다. (다음에 25.8.1960을 저장 한 후 등등) 그러나 27.8.2010 - 27.8.2010

"겨울 날짜 ": 27.4.1960 - 저장 후 동일하게 유지 : 27.4.1960

은 추한 버그처럼 보입니다. 이 "계산"을 어떻게 억누를 수 있습니까?

(날짜 형식은 내가 독일에 살고 Europeen의입니다. 1960년 8월 27일 1960 년 8 월 27 일입니다) 어떤 도움

덕분에, 우베

<xp:inputText value="#{Auftrag.MF_GebDatum}" id="mF_GebDatum1" style="width:255px"> 
    <xp:this.converter> 
     <xp:convertDateTime type="date"></xp:convertDateTime> 
    </xp:this.converter> 
</xp:inputText> 
+1

올바른 시간대 정보를 포함하여 * DateTime *으로 문서 필드가 저장되어 있습니까? –

+0

안녕 Sven, 그것은 DateTime으로 저장됩니다 : 26.08.1960 00:00:00 CEDT 27.08.2010 00:00:00 CEDT (모두 노트 클라이언트에서 보임) –

+0

흠 ... 일광 절약 시간제 문제가 있습니까? ?? 시간은 CEDT로 저장되고 서버는이를 CET (-1 시간)에 "수정"합니다. 그러면 25.08.1960 23:00:00 CET가되고 25.08.1960 00:00:00 CEDT 등으로 저장됩니다. –

답변

0

당신이 싸우고있는 문제이다 도미노 입력하는 날짜에 존재하지 않는 일광 절약 시간제 정보가 포함 된 날짜/시간 값을 저장합니다. 사용할 표준 시간대에 대한 정보는 현재 사용자 로켈 및/또는 서버에서 가져옵니다.

귀하의 날짜가 이었다 시간대에 필드에 저장된은

var ndt:NotesDateTime = session.createDateTime("26.08.1960 00:00:00 CEDT"); 
ndt.getGMTTime() 

을 조정하지 않고, 그대로 (+ 2 시간 그리니치 표준시)

26.08.1960 00:00:00 CEDT 

Domino가 저장된 값을 해석 입력 GMT의 경우 2 시간 씩 조정 된 올바른 날짜 시간 값을 반환합니다.

25.08.60 22:00:00 GMT 
var ndt:NotesDateTime = session.createDateTime("26.08.1960 00:00:00 CEDT"); 
ndt.toJavaDate().toLocaleString() 

이 1960년 8월 25일 23 "가 발생합니다 : 그것은 1 시간 만 조정됩니다 왜 23,414,동안 1960에서 일광 절약 시간이 결코 없다는 것을, 그것이"제대로 "해석됩니다 자바로 다시 변환, 그건 : 00 : 00 "입니다.

현재 쉬운 해결 방법은 DateTime 필드에서 표준 시간대 정보를 삭제하는 것입니다. 이렇게하려면이 SSJS 스크립트를 사용할 수 있습니다.

<xp:this.querySaveDocument> 
    <![CDATA[#{javascript: 
     var doc:NotesDocument = document1.getDocument(true); 
     var items:java.util.Vector = doc.getItems(); 
     var item:NotesItem; 
     var ndt:NotesDateTime; 
     var dt:java.util.Date; 

     for(var i=0; i<items.size(); i++){ 
     item = items.get(i); 
     if(item.getType() === 1024){ 
      ndt = item.getValueDateTimeArray().get(0); 
      ndt = session.createDateTime(ndt.getDateOnly()); 
      item.setDateTimeValue(ndt); 
      ndt.recycle(); 
     } 
     item.recycle(); 
     } 
    }]]> 
</xp:this.querySaveDocument> 
+0

안녕 스벤 , 답장을 보내 주셔서 감사합니다. - 저희 회사의 아주 좋은 프로젝트 관리 때문에 - 그것을 확인하는 데 시간이 필요했습니다. - 해결 방법으로 문제가 해결되지 않으면 그 이유는 그때 var ndt가 이미 있다고 생각합니다. 틀린 데이트 ... 그래서 ndt.getDateOnly()는 -1 날 날짜를 알려줍니다. 우웨 –