• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы lionk
  • Дата начала
L

lionk

В общем есть форма на ней два поля, одно поле для ввода даты и времени, другое комбобокс с выбором таймзоны для которой вносится эта дата с временем.
-сервер использует локальную таймзону.

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

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

Green Team
10.04.2014
1 202
225
BIT
36
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)
 
Последнее редактирование модератором:
L

lionk

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

alexas1

Green Team
10.04.2014
1 202
225
BIT
36
Не врубаюсь. Надо только сконвертить ОДНО поле и боле ничего не трогать?
CSJS - @TimeToTextInZone( timeDate ; timeZone ; formatString )
И ничего не надо перезагружать.
 
L

lionk

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!