Разделить дату и время от даты для ввода отдельно - PullRequest
4 голосов
/ 19 октября 2011

Я хотел бы сделать это:

Date meetingDateAndTime;

<h:inputText value="Date"/>
<h:inputText value="Time"/>

Как только я получил только один атрибут Date, можно ли ввести Date в inputText и ввести Time в другой и затем объединить их вместе?*

Ответы [ 3 ]

6 голосов
/ 19 октября 2011

Вы можете использовать два DateFormats, один для вывода даты, а другой для вывода времени. SimpleDateFormat

DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
DateFormat dateFormat = new SimpleDateFormat("hh:mm:ss");

Редактировать: Извините, я думал, что вы пытаетесь написать два поля из одной даты, а не создать одну дату из двух полей. Как насчет следующего:

DateFormat dateFormat = new SimpleDateFormt("dd-MM-yyyy hh:mm:ss);
String dateString = dateInputText + " " + timeInputText;
Date date = dateFormat.parse(dateString); 
1 голос
/ 19 октября 2011

Надеюсь, вы знаете, что большинство методов (и конструкторов) в классе java.util.Date устарели, поэтому я предлагаю вам вместо этого использовать java.util.GregorianCalendar.

Попробуйте это:

<h:inputText value="#{myBean.meetingDate}">
   <f:convertDateTime pattern="yyyy-MM-dd" />
</h:inputText>
<h:inputText value="#{myBean.meetingTime}">
   <f:convertDateTime pattern="hh:mm:ss" />
</h:inputText>

Вот базовый компонент:

import java.util.Date;
import java.util.Calendar;
import java.util.GregorianCalendar;

public class MyBean {
    private GregorianCalendar fullMeetingDateTimeInfo = new GregorianCalendar();
    private Date meetingDate;
    private Date meetingTime;

    public Date getMeetingDate() { return meetingDate; }

    public Date getMeetingTime() { return meetingTime; }

    public Date setMeetingDate(Date meetingDate) { 
       this.meetingDate = meetingDate;
       fullMeetingDateTimeInfo.set(Calendar.YEAR, Integer.parseInt(new SimpleDateFormat("yyyy").format(meetingDate)));
       fullMeetingDateTimeInfo.set(Calendar.MONTH, Integer.parseInt(new SimpleDateFormat("MM").format(meetingDate)));
       fullMeetingDateTimeInfo.set(Calendar.DATE, Integer.parseInt(new SimpleDateFormat("dd").format(meetingDate)));
    }

    public Date setMeetingTime(Date meetingTime) { 
       this.meetingTime = meetingTime;
       fullMeetingDateTimeInfo.set(Calendar.HOUR_OF_DAY, Integer.parseInt(new SimpleDateFormat("H").format(meetingTime)));
       fullMeetingDateTimeInfo.set(Calendar.MINUTE, Integer.parseInt(new SimpleDateFormat("mm").format(meetingTime)));
       fullMeetingDateTimeInfo.set(Calendar.SECOND, Integer.parseInt(new SimpleDateFormat("ss").format(meetingTime)));
    }

    public GregorianCalendar getFullMeetingDateTimeInfo() {
        return fullMeetingDateTimeInfo;
    }
}

Как видите, я объединяю информацию о дате из одного объекта Date с информацией о времени из другого объекта Date.Объединенные данные хранятся в свойстве fullMeetingDateTimeInfo .Поэтому в дальнейшем вам придется работать со свойством fullMeetingDateTimeInfo , если вы хотите объединить полную информацию о времени встречи в одном объекте.

Удачи!

Константин

0 голосов
/ 19 октября 2011

попробуйте это:

<h:inputText value="dateobject">
   <f:convertDateTime pattern="dd-MM-yyyy" />
</h:inputText>
<h:inputText value="dateobject">
   <f:convertDateTime pattern="hh:MM:ss" />
</h:inputText>

Дох, я неправильно понял вопрос: о)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...