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, просто использовать свои часы и минуты, чтобы выбрать ввод.

Другие вопросы по тегам