我有一个包含字段W_PLANNED_DATE: 19/03/2013 10:55:00 (Date)
在Java中,我将此值放入变量:
Date dteBeginOrWaitingItem = orWaitinglist.getWPlannedDate();
value: 2013-03-19
现在,我的时间发生了什么?我需要这个来填充primefaces的schedulelecomponent。 如何获得完整的日期和时间值
eventResourceAvailPerDay.addEvent(new DefaultScheduleEvent(reason, dteBeginOrWaitingItem, dteEndOrWaitingItem, "waitingitem"));
此方法将事件置于12:00 PM
,因为没有其他时间或时间只是00:00:00
我知道如何使用Calendar类但它只是让我设置日期,时间似乎是空的但在数据库视图中我有一个日期时间值。
为myBean
import java.util.Date;
@ManagedBean(name="scheduleController")
@SessionScoped
public class ScheduleController implements Serializable {
private Date dteBeginOrWaitingItem, dteEndOrWaitingItem;
//methods
try
{
//eventWaitinglist.clear();
OrWaitinglistDao orWaitinglistDao = new OrWaitinglistDaoImpl();
waitingEvents = orWaitinglistDao.getOrWaitinglistKeysByResource(rKey);
int i = 0;
Iterator<OrWaitinglist> it2 = waitingEvents.iterator();
while (it2.hasNext())
{
orWaitinglist = it2.next();
dteBeginOrWaitingItem = (Date) orWaitinglist.getWPlannedDate();
dteEndOrWaitingItem = orWaitinglist.getWPlannedDate();
//dteEndOrWaitingItem = orWaitinglist.getWPlannedDate();
reason = orWaitinglist.getWDescription();
eventResourceAvailPerDay.addEvent(new DefaultScheduleEvent(reason, dteBeginOrWaitingItem, dteEndOrWaitingItem, "waitingitem"));
i += 1;
System.out.println("EventWaiting: " + i + " " + dteBeginOrWaitingItem + " " + dteEndOrWaitingItem + " " + reason);
}
}
catch(java.util.EmptyStackException Ex)
{
System.out.println(Ex.getMessage());
}
工作更新: 豆:
try
{
//eventWaitinglist.clear();
OrWaitinglistDao orWaitinglistDao = new OrWaitinglistDaoImpl();
waitingEvents = orWaitinglistDao.getOrWaitinglistKeysByResource(rKey);
int i = 0;
Iterator<OrWaitinglist> it2 = waitingEvents.iterator();
while (it2.hasNext())
{
orWaitinglist = it2.next();
Long wPlannedDate = orWaitinglist.getWPlannedDate().getTime();
if (wPlannedDate != 0) {
Date wPlannedDateConverted = new Date(wPlannedDate);
dteBeginOrWaitingItem = convertDate(0, 0, wPlannedDateConverted);
dteEndOrWaitingItem = convertDate(orWaitinglist.getWDuration().intValue(), orWaitinglist.getWAdditionalTime().intValue(), wPlannedDateConverted);
}
reason = orWaitinglist.getWDescription();
DefaultScheduleEvent newResourceEvent = new DefaultScheduleEvent(reason, dteBeginOrWaitingItem, dteEndOrWaitingItem, orWaitinglist);
newResourceEvent.setStyleClass("waitingitem");
eventResourceAvailPerDay.addEvent(newResourceEvent);
}
}
catch(java.util.EmptyStackException Ex)
{
System.out.println(Ex.getMessage());
}
public static Date convertDate(Integer wDuration, Integer wAdditionalTime, Date availDate)
{
Calendar cal = Calendar.getInstance();
Integer wAdditionalTimeHours, wAdditionalTimeMinutes;
Integer wDurationHours, wDurationMinutes;
if(wAdditionalTime != 0 || wDuration != 0) {
if (wAdditionalTime !=0) {
wAdditionalTimeHours = (int) Math.floor (wAdditionalTime / 60);
wAdditionalTimeMinutes = wAdditionalTime - (wAdditionalTimeHours * 60);
cal.setTime(availDate);
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE), cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
cal.add(Calendar.MINUTE, wAdditionalTimeMinutes);
cal.add(Calendar.HOUR_OF_DAY, wAdditionalTimeHours);
}
if (wDuration != 0) {
wDurationHours = (int) Math.floor (wAdditionalTime / 60);
wDurationMinutes = wAdditionalTime - (wDurationHours * 60);
cal.setTime(availDate);
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE), cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
cal.add(Calendar.MINUTE, wDurationMinutes);
cal.add(Calendar.HOUR_OF_DAY, wDurationHours);
}
} else {
cal.setTime(availDate);
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE), cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
}
return cal.getTime();
}
模型更新:
<property name="WPlannedDate" type="timestamp">
<column length="7" name="W_PLANNED_DATE">
<comment>Planned date</comment>
</column>
</property>
答案 0 :(得分:2)
java.sql.Date不会返回时间组件,您应该在创建预备语句时使用java.util.Date或者您正在查询数据库的任何其他方式。
编辑: 将java.util.Date与sql查询一起使用可能会很棘手,因为查询会期望java.sql.Date。它在春天适合我。如果您不想使用它,那么您也可以使用java.sql.Timestamp。
见以下文件:
8.3.12 DATE,TIME和TIMESTAMP
有三种与时间相关的JDBC类型:
JDBC DATE类型表示由日,月和日组成的日期 年。相应的SQL DATE类型在SQL-92中定义,但它是 仅由主要数据库的子集实现。一些数据库 提供支持类似语义的替代SQL类型。 JDBC TIME类型表示由小时,分钟和秒组成的时间。 相应的SQL TIME类型在SQL-92中定义,但它是 仅由主要数据库的子集实现。与DATE一样, 一些数据库提供支持类似的替代SQL类型 语义。 JDBC TIMESTAMP类型表示DATE加TIME加上a 纳秒场。相应的SQL TIMESTAMP类型定义于 SQL-92,但它只由极少数实现 数据库。因为标准Java类java.util.Date没有 完全匹配这三种JDBC日期/时间类型中的任何一种(包括 JDBC定义了DATE和TIME信息但没有纳秒 java.util.Date的三个子类对应于SQL类型。 他们是:
java.sql.Date for SQL DATE信息。小时,分钟,秒和 应将java.util.Date基类的毫秒字段设置为 零。如果提供给java.sql.Date的毫秒数 构造函数为负数,驱动程序将计算日期为 1970年1月1日之前的毫秒数。否则,日期是 计算为1月1日后指定的毫秒数, 1970。
用于SQL TIME信息的java.sql.Time。年,月和日 java.util.Date基类的字段设置为1970年1月和 这是Java时代的“零”日期。 SQL TIMESTAMP信息的java.sql.Timestamp。该类通过添加扩展java.util.Date 一个纳秒的字段。
答案 1 :(得分:0)
编辑:如果您使用.xml for hibernate更改类型为timestamp而不是date。
<property name="yourdate" column="YOUR_DATE" type="timestamp" />
因此,您有时间在您的数据库上,并可以使用simpledateformat
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy-HH:mm");
dateFormat.format(orWaitinglist.getWPlannedDate());
答案 2 :(得分:0)
应使用java.sql.Date
而不是java.sql.Timestamp
,而不是DATE
。 oracle类型TIMESTAMP
等同于JDBC和SQL标准类型get/setDate
。
当使用其中一个{{1}}方法时,JDBC规范要求驱动程序排除时间部分。