从日期分割日期和时间单独输入

时间:2011-10-19 12:34:43

标签: java jsf

我想这样做:

Date meetingDateAndTime;

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

一旦我只有一个属性Date,是否可以在inputText中键入Date并在另一个中键入Time然后将它们合并在一起?

3 个答案:

答案 0 :(得分:6)

您可以使用两个DateFormats,一个输出Date,另一个输出Time。 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 :(得分:1)

我希望您知道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>

这是支持bean:

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 属性。

祝你好运!

康斯坦丁

答案 2 :(得分:0)

试试这个:

<h:inputText value="dateobject">
   <f:convertDateTime pattern="dd-MM-yyyy" />
</h:inputText>
<h:inputText value="dateobject">
   <f:convertDateTime pattern="hh:MM:ss" />
</h:inputText>
是的,我误解了这个问题:o)