Alloy UI формат времени 24 часа Liferay 6
Привет, как показать разрешение выбора даты для поля времени в 24-часовом формате? Я использую
[code]
<%
Calendar dob = CalendarFactoryUtil.getCalendar();
dob.setTime(new Date());
%>
<aui:input name="schedule_msg" model="<%= Message_Schedule.class %>"
bean="<%= msch %>" value="<%= now %>" label="Schedule Time"/>
[/code]
в режиме AM/PM... или, если используется режим AM/PM, как получить значение, как обычно, если я хочу получить значение в своем классе портлета, как это [code]
int day = ParamUtil.getInteger(request, "schedule_msgDay");
int month = ParamUtil.getInteger(request, "schedule_msgMonth");
int year = ParamUtil.getInteger(request, "schedule_msgYear");
int hour = ParamUtil.getInteger(request, "schedule_msgHour");
int min = ParamUtil.getInteger(request, "schedule_msgMinute");
try
{
msgSchedule.setSchedule_msg(PortalUtil.getDate(month, day, year, hour, min, new PortalException()));
}catch(Exception e)
{
msgSchedule.setSchedule_msg(new Date());
}
[/ code] есть идеи как получить это значение?? пример на рисунке показывает 4:54: PM, значит, через 24 часа он становится 16:54:00 .... Пожалуйста, помогите
Спасибо
С уважением
Даниал
2 ответа
aui:input
taglib (который в свою очередь использует liferay-ui:input-date
а также liferay-ui:input-time
taglibs) показывает поле выбора AM/PM, если этого требует формат времени для текущей локали. В Liferay 6.1.1 посмотрите на строку 36 в html/taglib/ui/input_time/page.jsp
,
Так что вам определенно следует придерживаться встроенного поведения, которое показывает поле выбора AM/PM в зависимости от текущей локали.
Чтобы правильно определить дату в своем классе портлета, вы можете черпать вдохновение из EditEventAction
класс, который является действием Struts, вызываемым при добавлении, обновлении или удалении события в портлете Календарь. Что-то вроде этого:
int startDateMonth = ParamUtil.getInteger(actionRequest, "startDateMonth");
int startDateDay = ParamUtil.getInteger(actionRequest, "startDateDay");
int startDateYear = ParamUtil.getInteger(actionRequest, "startDateYear");
int startDateHour = ParamUtil.getInteger(actionRequest, "startDateHour");
int startDateMinute = ParamUtil.getInteger(actionRequest, "startDateMinute");
int startDateAmPm = ParamUtil.getInteger(actionRequest, "startDateAmPm");
if (startDateAmPm == Calendar.PM) {
startDateHour += 12;
}
После этого, если вы хотите получить Date
Для объекта на основе этих значений важно решить, представляют ли эти значения дату в формате UTC, в часовом поясе текущего пользователя или что-то еще. Посмотрите на addEvent
метод в CalEventLocalServiceImpl
класс, чтобы знать, как это сделать: в основном, вы должны создать объект календаря с CalendarFactoryUtil.getCalendar
метод, передавая локаль и часовой пояс, а затем вы можете установить различные значения.
Часть пользовательского интерфейса Liferay плохо документирована, вот атрибуты, которые я нашел, http://docs.liferay.com/portal/6.2/taglibs/liferay-ui/input-time.html, но там никогда не описывается, как использовать эти атрибуты, каковы значения этих атрибутов.
Я потратил слишком много времени на поиск в Google и экспериментирование, и решил вместо этого использовать JQuery datetime pick.
Другой способ - не использовать liferay-ui: input-time, просто использовать свои часы и минуты, чтобы выбрать ввод.