Мне нужно получить таймзону клиента, для того, чтобы передать её в параметр компонента на странице. Страница работает с бином, из которого получает данные с помощью EL-выражений. Как получить таймзону сервера, я знаю:
TimeZone.getDefault()
Как получить таймзону на клиенте (мне нужен ID таймзоны) тоже:
new Date().toTimeString().split('(')[1].toString().replace(')','');
Но вот как мне передать значение ID таймзоны клиента в бин (или, может, получить сразу в бине), или сразу в value
компонента я не знаю. Подскажите какие-нибудь варианты, плиз.
Как вы уже поняли на клиенте вы можете получить зону из времени, поэтому можно сделать скрытое поле в которое с помошью js установить текущее время и передать значение этого поля на сервер с помощью ajax или когда отправляете форму. На сервере парсите дату, получаете зону ну и делаете что хотите. Если заморачиваетесь с различными зонами то советую на сервере и в базе даынных хранить все в UTC.
Вот примерчик нашел с использованием PrimeFaces
<h:body style="margin-left:50px">
<h2>PrimeFaces RemoteCommand Example</h2>
<h:form>
<p:remoteCommand name="updateTz" update="tz" actionListener="#{timeZoneBean.updateClientTz}"/>
Client time zone offset:
<b>
<h:outputText id="tz" value="#{timeZoneBean.clientTzOffset}"/>
</b>
</h:form>
<script type="text/javascript">
$(document).ready(function() {
var date = new Date();
var offSetVal = date.getTimezoneOffset();
updateTz([{name:'offset',value:-offSetVal/60}]);
});
</script>
</h:body>
@ManagedBean
@RequestScoped
public class TimeZoneBean {
@ManagedProperty("#{param.offset}")
private String timeZoneOffset;
private String clientTzOffset = "";
public void updateClientTz() {
Locale locale = FacesContext.getCurrentInstance()
.getExternalContext()
.getRequestLocale();
if (timeZoneOffset != null && locale != null) {
ZoneOffset offset = ZoneOffset.of(timeZoneOffset);
clientTzOffset = offset.getDisplayName(TextStyle.FULL, locale);
}
}
public String getClientTzOffset() {
return clientTzOffset;
}
public void setTimeZoneOffset(String timeZoneOffset) {
this.timeZoneOffset = timeZoneOffset;
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Коллеги, подскажите: имеется строка с датой вида: Fri Oct 06 15:54:33 MSK 2017 пытаюсь её превратить в javasql