Установка произвольный timezone в data поле

Тема в разделе "Lotus - Xpages", создана пользователем lionk, 21 авг 2015.

  1. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    В общем есть форма на ней два поля, одно поле для ввода даты и времени, другое комбобокс с выбором таймзоны для которой вносится эта дата с временем.
    -сервер использует локальную таймзону.

    Подскажите как заставить это работать?

    1)Решил использовать конвертер компонента на странце.
    Выяснилось что он применятся только при открытии страницы, а при сохранении(с полной перегрузкой страницы) не применяется к полю.
    Выходит что все новые документы сохраняются с серверной таймзоной а при повторном открытии и пересохранении конвертируются.

    2)Перезадавать время в ручную, типо так:
    tTime=dateField.getLocalTime();
    dateField.convertToZone(zone:int, isDST:boolean);
    dateField.setLocalTime(tTime);

    setLocalTime - если в неё передавать не тип Date ставит зону в 0(гринвич), и поменять её нет вариантов.

    3)Есть возможность отказаться от лотусного типа NotesDateTime в угоду javascript Date
    jsTime=dateField.toJavaDate();
    /* но стандартными функциями данного типа я так и не смог установить кастомную таймзону с сохранением значений времени введенных пользователем*/
    dateField.setLocalTime(jsTime);


    Поделитесь кто то, как в ручную менять таймзону?
    Гугл предлагает порнографию с ручным отниманием лишних часов и кучей матана, я не хочу верить что всё так печально.
     
  2. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    563
    Симпатии:
    214
    Код (Javascript):
    <?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:label value="The current timeZone is:" id="label1"
         for="computedField1"></xp:label>&#160;
    <xp:text escape="true" id="computedField1"
         value="#{javascript:context.getTimeZone()}"></xp:text>
    <xp:br></xp:br>
      Local time is:&#160;
    <xp:text escape="true" id="computedField2"
          value="#{javascript:@Now()}">
       <xp:this.converter>
         <xp:convertDateTime type="time"></xp:convertDateTime>
       </xp:this.converter>
    </xp:text>
    <xp:br></xp:br>
    <xp:button value="to LA" id="button1">
       <xp:eventHandler event="onclick" submit="true"
             refreshMode="complete">
         <xp:this.action>
           <xp:executeScript
                 script="#{javascript:context.setTimeZoneString('America/Los_Angeles');}">
           </xp:executeScript>
         </xp:this.action>
       </xp:eventHandler>
    </xp:button>
    </xp:view>

    Скачай вот это тут 100500 примеров, и твой в том числе (таб - Other, слева XSP Context)
     
    #2 alexas1, 21 авг 2015
    Последнее редактирование модератором: 21 авг 2015
  3. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    но context.setTimeZoneString меняет зону для всей сесси а не для текущей страницы.
    и дальше пользователь сидит в этой зоне, и все поля дат конвертятся в эту зону.
    темболее после тестов выяснилось что в если менять зону в бекграунде(в кнопке сохранения) то по факту она также применяется к значениям только после перезагрузки страницы.
    тоесть данные в поле сохраняются как в зоне сервера, страница перезагружается и показывает время переконвертированное в время зоны из поля.
     
  4. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    563
    Симпатии:
    214
    Не врубаюсь. Надо только сконвертить ОДНО поле и боле ничего не трогать?
    CSJS - @TimeToTextInZone( timeDate ; timeZone ; formatString )
    И ничего не надо перезагружать.
     
  5. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    нет,
    открылась у тебя странца:
    она показывает твою локальную таймзону.
    но тебе нужно указать в поле время относительно любой таймзоны.
    например:
    у тебя GMT+3
    в поле ты пишешь 15:00
    в поле зоны выбираешь GMT+5
    и оно должно сохранится как положенно.
    в твоей таймзоне покажет 13:00, а у юзера из GMT+5 покажет 15:00.
    как то так.
     
Загрузка...
Похожие Темы - Установка произвольный timezone
  1. Serj100500
    Ответов:
    4
    Просмотров:
    46
  2. geliz
    Ответов:
    1
    Просмотров:
    692
  3. Vander
    Ответов:
    14
    Просмотров:
    2.543
  4. dimat
    Ответов:
    50
    Просмотров:
    6.311
  5. Tomash
    Ответов:
    1
    Просмотров:
    1.055

Поделиться этой страницей