Время тура в Xpath - PullRequest
       27

Время тура в Xpath

0 голосов
/ 15 ноября 2018

Какой самый простой и правильный способ округлить время и дату и время в XPath?

Например, как определить функцию local:round-time-to-minutes таким образом, чтобы следующий тест-кейс:

let $t1 := xs:time( "12:58:37" )
let $t2 := local:round-time-to-minutes( $t1 )
return format-time( $t2, '[H01]:[m01]:[s01]' )

вернет "12:59:00". Не уверен, что лучше в случае «23:59:31» - вернуть «00:00:00» или вызвать динамическую ошибку.

И похожая функция local:round-datetime-to-minutes для обработки dateTime? (у него нет такого крайнего случая, как указано выше)

Пусть эти функции используют правило «округлить половину до положительной бесконечности», где половина равна 30,0 секундам.

1 Ответ

0 голосов
/ 15 ноября 2018

Вот как будет выглядеть решение, предложенное @ michael.hor257k в XQuery:

declare variable $ONE_MIN := xs:dayTimeDuration("PT1M");
declare variable $MIDNIGHT := xs:time("00:00:00");

declare function local:round-time-to-minutes($time) {
  $MIDNIGHT + round(($time - $MIDNIGHT) div $ONE_MIN) * $ONE_MIN
};
...