XSLT время преобразования даты - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть две переменные с putdate и puttime (формат HHMMSSTH).Эти две переменные взяты из заголовка mqmd.

<xsl:variable name="putdate">
        <xsl:value-of select="'20051114'"/>
      </xsl:variable>
      <xsl:variable name="puttime">
        <xsl:value-of select="'10594016'"/>
      </xsl:variable>

Формат puttime - HHMMSSTH

HH
Hours (00 to 23)
MM
Minutes (00 to 59)
SS
Seconds (00 to 59)
T
Tenths of a second (0 to 9)
H
Hundredths of a second (0 to 9).

У меня есть третья переменная, incrementtime, которая в миллисекундах, в данном случае это1990 миллисекунд.Что мне нужно сделать xslt, это добавить значение 1990 миллисекунд к положению, я думаю, что ниже приведены шаги

1) Take the 10th value, which is 9(from 1990), then add to puttime's H, which makes it 10594025(9+6=15)
2)Take the 100th value, which is 9(from 1990), then add to puttimes's T, which makes it 10594115(9+2=11)
3)Take the 1000th value, which is 1(from 1990), then add to puttime's SS, which makes it 10594215

Результирующее время равно 10594315. Вывод xslt должен быть "2005-11-14 10: 59: 42: 15 "(фактически по Гринвичу), конвертировано в горное время.

1 Ответ

1 голос
/ 28 февраля 2012

XSLT 1.0 не имеет встроенной поддержки значений времени.Чтобы иметь возможность добавлять к значениям времени, вы должны самостоятельно реализовать всю логику переполнения.

  • Фракции ≥ 100 ⇒ Инкремент секунд
  • Секунд ≥ 60 ⇒ Инкремент минут
  • Минуты ≥ 60 ⇒ Приращения часов
  • Часы ≥ 24 ⇒ Приращения дней
  • Дни ≥ 28, 29, 30 или 31 ⇒ Приращения месяцев
  • Месяцы ≥ 12 ⇒ Приращения лет

И тогда вам также придется обрабатывать правила перехода на летнее время, иначе это значение будет испорчено при прохождении даты переключения.Если вам удастся реализовать его, он станет огромным, не поддерживаемым фрагментом кода.

В XSLT 2.0 у вас есть тип xs:dateTime (и аналогичный), который может выполнять вычисления за вас.Было бы намного проще сделать это в XSLT 2.0 или даже в императивном языке программирования (Java, C #, Python и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...