Формат времени 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, как получить значение?? обычно, если я хочу получить значение в своем классе портлета, как это [код]

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 .... Пожалуйста, помогите.

Спасибо

С Уважением

Даниал


person dmh    schedule 14.05.2013    source источник


Ответы (2)


Библиотека тегов aui:input (которая, в свою очередь, использует библиотеки тегов liferay-ui:input-date и liferay-ui:input-time) показывает поле выбора 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, чтобы узнать, как это сделать: в основном вам нужно создать объект Calendar с помощью метода CalendarFactoryUtil.getCalendar, передав локаль и часовой пояс, а затем вы можете установить различные значения.

person Andrea Di Giorgi    schedule 14.05.2013

Часть пользовательского интерфейса Liferay плохо документирована, вот атрибуты, которые я нашел, http://docs.liferay.com/portal/6.2/taglibs/liferay-ui/input-time.html, но никогда не описывает, как использовать эти атрибуты, каковы значения этих атрибутов.

Я потратил слишком много времени на гугление и эксперименты, и вместо этого решил использовать выбор даты и времени JQuery.

Другой способ - не использовать liferay-ui:input-time, просто чтобы использовать свои собственные часы и минуты для выбора ввода.

person Hao Deng    schedule 10.07.2013