Функции работы со значениями даты и времени (1 Viewer)

123vak123

Portal Pro
December 13, 2010
194
148
Minsk
Belarus Belarus
Country flag
Продолжение топиков Is it possible to add two time values? и [confirm] - date.extract - function does not work correctly?.

Yes, date.add return DateTime, string.ltrim work only with string, format DateTime to string and then use ltrim
А в Медиапортале есть функция преобразования DateTime в String? Теги #date и #time изначально имеют тип DateTime или String? В wiki приводятся примеры непосредственной работы функций string.ltrim (string.rtrim) с #date и #time.

И несколько непонятных моментов.
1. Не получается корректно задать видимость строкой типа <visible>string.equals(string.length(#currentremaining), <число>)</visible> или <visible>string.equals(#(string.length(#currentremaining)), <число>)</visible>.
2. Строка типа <label>#(iif(eq(#(string.length(#currentremaining)),7),'7','5'))</label> работает корректно при соответствующих значениях string.length(#currentremaining), но если вместо истинного (7) или ложного (5) значения вписываю строки #(date.add('n',date.extract('n',cdate(#currentremaining)), date.add('h',date.extract('h',cdate(#currentremaining)),cdate(#time)))) и #(date.add('n',date.extract('n',cdate(#currentremaining,'mm:ss')), date.add('h',date.extract('h',cdate(#currentremaining,'mm:ss')),cdate(#time)))) получаю ошибку.
3. Не понятно, почему по-разному работают одни и те же строки в файлах videoOSD.xml и videoFullScreen.xml?

В целом, я получил, что хотел. Еще раз, большое спасибо ajs за помощь.
 

ajs

Development Group
  • Team MediaPortal
  • February 29, 2008
    12,448
    7,142
    Kyiv
    Ukraine Ukraine
    Country flag
    #date и #time это строки. Преобразовать ДатуВремя преобразовать в строку можно с помощью функции string.format...

    --
    WBR, ajs
     

    ajs

    Development Group
  • Team MediaPortal
  • February 29, 2008
    12,448
    7,142
    Kyiv
    Ukraine Ukraine
    Country flag
    Хммм... По идее вот так должно работать:
    <visible>string.equals('string.length(#currentremaining)', '<число>')</visible>
    Или может:
    <visible>#(eq(string.length(#currentremaining), <число>))</visible>

    Или попробовать string.equalsvalue... надо экспериментировать ;)

    Можно ещё string.length с помощью string.format из числа в строку перевести а потом уже с строкой типа число сравнивать... Я далековато от Медиапортала проверить не могу...

    --
    WBR, ajs
     

    123vak123

    Portal Pro
    December 13, 2010
    194
    148
    Minsk
    Belarus Belarus
    Country flag
    Пробовал <visible>string.equals('string.length(#currentremaining)', '<число>')</visible> и <visible>#(eq(string.length(#currentremaining), <число>))</visible> - не получилось. Меня устраивает текущий вариант: <define property="true" evaluateNow="true">#lenght:#(string.length(#currentremaining))</define> + <visible>string.equals(#lenght,<число>)</visible>. Хотя минус такого варианта - нет онлайн обновления данных.

    Преобразовать ДатуВремя преобразовать в строку можно с помощью функции string.format...
    Преобразовывать длинющее выражение в строку, затем обрезать ненужные символы и всё это делать одним выражением :eek:. Пусть лучше остается как есть.:)
     

    ajs

    Development Group
  • Team MediaPortal
  • February 29, 2008
    12,448
    7,142
    Kyiv
    Ukraine Ukraine
    Country flag
    Можно попробовать так:
    <visible>string.equalsvalue(string.length(#currentremaining),<число>)</visible>
    Перед число не ставить пробел
    Или
    <visible>string.equalsvalue(<число>,string.length(#currentremaining))</visible>
    ;)

    --
    WBR, ajs
     

    ajs

    Development Group
  • Team MediaPortal
  • February 29, 2008
    12,448
    7,142
    Kyiv
    Ukraine Ukraine
    Country flag
    Упс... Не equalsvalue а valueequals

    --
    WBR, ajs

    [/b][/b]
     

    123vak123

    Portal Pro
    December 13, 2010
    194
    148
    Minsk
    Belarus Belarus
    Country flag
    <visible>string.valueequals(string.length(#currentremaining),<число>)</visible> - не получилось
    <visible>string.valueequals(#(string.length(#currentremaining)),<число>)</visible> - работает, если <число> = 7
     

    ajs

    Development Group
  • Team MediaPortal
  • February 29, 2008
    12,448
    7,142
    Kyiv
    Ukraine Ukraine
    Country flag
    Это правильно? Или нет?

    --
    WBR, ajs
     

    123vak123

    Portal Pro
    December 13, 2010
    194
    148
    Minsk
    Belarus Belarus
    Country flag
    Это не совсем правильно. В качестве теста я задал два текстовых блока, каждый с условием видимости: первый блок - <visible>string.valueequals(#(string.length(#currentremaining)),7)</visible> , второй блок - <visible>string.valueequals(#(string.length(#currentremaining)),5)</visible>. Запускаю воспроизведение видео. #currentremaining больше одного часа, string.length(#currentremaining)=7 - выводится первый блок. Тут всё правильно. Проходит время, #currentremaining меньше одного часа, string.length(#currentremaining)=5 (я это вижу отдельной строкой!), но первый блок не исчезает и второй не появляется.
     

    Users Who Are Viewing This Thread (Users: 0, Guests: 1)

    Top Bottom