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

lionk

Well-known member
05.04.2007
310
2
#1
В общем есть форма на ней два поля, одно поле для ввода даты и времени, другое комбобокс с выбором таймзоны для которой вносится эта дата с временем.
-сервер использует локальную таймзону.

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

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);


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

alexas1

Lotus team
10.04.2014
723
144
#2
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> 
<xp:text escape="true" id="computedField1"
	 value="#{javascript:context.getTimeZone()}"></xp:text>
<xp:br></xp:br>
  Local time is: 
<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)
 
Последнее редактирование модератором:

lionk

Well-known member
05.04.2007
310
2
#3
но context.setTimeZoneString меняет зону для всей сесси а не для текущей страницы.
и дальше пользователь сидит в этой зоне, и все поля дат конвертятся в эту зону.
темболее после тестов выяснилось что в если менять зону в бекграунде(в кнопке сохранения) то по факту она также применяется к значениям только после перезагрузки страницы.
тоесть данные в поле сохраняются как в зоне сервера, страница перезагружается и показывает время переконвертированное в время зоны из поля.
 

alexas1

Lotus team
10.04.2014
723
144
#4
Не врубаюсь. Надо только сконвертить ОДНО поле и боле ничего не трогать?
CSJS - @TimeToTextInZone( timeDate ; timeZone ; formatString )
И ничего не надо перезагружать.
 

lionk

Well-known member
05.04.2007
310
2
#5
нет,
открылась у тебя странца:
она показывает твою локальную таймзону.
но тебе нужно указать в поле время относительно любой таймзоны.
например:
у тебя GMT+3
в поле ты пишешь 15:00
в поле зоны выбираешь GMT+5
и оно должно сохранится как положенно.
в твоей таймзоне покажет 13:00, а у юзера из GMT+5 покажет 15:00.
как то так.