다음과 같은 형식으로 날짜를받을 수 있습니다. 그러나 확장자를 사용할 수 없습니다.XSL 날짜 및 XSLT 1.0 & 사용 시간 차이 계산 (XSLT 1.0)
- 내가 XSLT 내에서 사용될 수있는 네임 스페이스로 제한하고,
- 을 내가 XSL 스타일 시트 (타사 응용 프로그램)을 사용하고 여기서
나는 또한뿐만 아니라 다른 제한이 은 xsl 내의 include/import 작업을 제대로 처리하지 않습니다.
그래서 사실상 xslt는 자체적으로 호출되거나 참조되어야하는 것이 무엇이든간에 자체 집행 적이어야합니다.
나는 & 시간 &을 Excel이하는 많은 방식으로 날짜 계산을 처리하는 율리우스 시리얼 넘버 &으로 변환하려고 생각했다. 예 -
모든 소수의 왼쪽 일이고, 오른쪽 소수의 모든 시간에09/14/2011 08:19:37 = 40800.346956018500000
09/15/2011 12:22:46 = 40801.515810185200000
difference 1 day 4 hours 3 minutes and 9 seconds
difference = 1.168854166666280
(즉 0.168854166666280 * 24 = 4.0524999999990680 또는 4 시간의 시간 0.0525 % 인 3.15 의사록).
확장 기능을 사용하지 않고 XSLT 1.0에서이 유형의 경과 된 날짜 - 시간 계산을 한 사람이 있습니까?
재사용 할 수있는 기존 코드 세트가 있으면 의견, 제안 또는 참조를 이해할 수 있습니다.
편집 -
내가 위의를 진행하기로 결정하고, 시간의 변환에 대한 난관을 명중했다.
내가 사용 예는 다음과 같습니다 시작 시간 = 8시 19분 37초 종료 시간,이 7시 38분 56초 (BTW의 지속 시간/차이가 15시 58분 33초
입니다 = 같은 날 계산에만 해당 - Endtime < 시작 시간 또는 일이 0보다 큰 경우 오류가 발생합니다.
시간에 도착하려면 모든 것을 초로 변환하십시오. & 다음 수학을 수행하십시오. 08:19:37은 29977로 변환됩니다 (8 * 3600 시간 + 19 * 60 분 + 초). 15:58:33은 57513 (15 * 3600 시간 + 58 * 60 분 + 초)으로 변환됩니다.
차이는 27536 초입니다.
내가 얻을 : 3,600분의 27,536 = 7.6488888888888888888 < - 정수 부분은 다음 시간 27,536의 차이 - 25200 = 2336 < - 25200 = 7 시간 * 3,600초 60분의 2,336 = 38.93333333333333333 < - - 정수 부분은 3835 분 이고 그 다음 2336 - 2280 = 56 초 사이의 차이입니다.
그러나이 숫자의 정수 부분을 잡으려고하면 그 반올림 대상이됩니다.
<xsl:template name="time-difference">
<xsl:param name="from-hour"/>
<xsl:param name="from-minute"/>
<xsl:param name="from-second"/>
<xsl:param name="to-hour"/>
<xsl:param name="to-minute"/>
<xsl:param name="to-second"/>
<xsl:variable name="f-secs" select="($from-hour * 3600) + ($from-minute * 60) + ($from-second)"/>
<xsl:variable name="t-secs" select="($to-hour * 3600) + ($to-minute * 60) + ($to- second)"/>
<xsl:variable name="sec-diff" select="$t-secs - $f-secs"/>
<xsl:variable name="daysec-diff" select="format-number(($sec-diff div 86400),'#')"/>
<xsl:variable name="q" select="($sec-diff div 3600)"/>
<xsl:variable name="t-hrs-diff" select="format-number(($sec-diff div 3600),'00')"/>
변수 q는 위의 (정확하다) 그러나, 형식 - 한 번 t-시간-DIFF는 이제 어떻게 내 시간이 부정확하고, 거기에 "08"가 7.648888888888888888있다
.숫자의 정수 부분을 잡으려고하는 다른 형식 지정 시도가 반올림된다는 것을 알고 있습니다.
& 문자열-후 문자열-전에의 외부 - (내가 생각) 나 다음 계산에 사용하기 전에 숫자로 결과를 변환해야 할 것이다 - 다른 방법에있다 숫자의 변경되지 않은 정수 부분을 잡아 & 문자열에서 숫자로 변환 할 필요가 없습니까?