0

我有一个包含字段的 Oracle 数据库W_PLANNED_DATE: 19/03/2013 10:55:00 (Date)

在 Java 中,我将此值放入一个变量中:

Date dteBeginOrWaitingItem = orWaitinglist.getWPlannedDate();

value: 2013-03-19

现在,我的时间怎么了?我需要这个来填充primefaces的schedulecomponent。如何获得完整的日期和时间值

eventResourceAvailPerDay.addEvent(new DefaultScheduleEvent(reason, dteBeginOrWaitingItem, dteEndOrWaitingItem, "waitingitem"));

此方法将事件置于12:00 PM没有其他时间或时间正好00:00:00

我知道如何使用 Calendar 类,但它只是让我设置日期,时间似乎是空的,但在数据库视图中我有一个日期时间值。

豆豆

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>
4

3 回答 3

2

java.sql.Date 不会返回时间组件,您应该在创建准备好的语句时使用 java.util.Date 或以任何其他方式查询数据库。

编辑:将 java.util.Date 与 sql 查询一起使用可能会很棘手,因为查询需要 java.sql.Date。它在春天对我有用。如果您不想使用它,那么您也可以使用 java.sql.Timestamp。

请参阅以下文档:

8.3.12 日期、时间和时间戳

与时间相关的 JDBC 类型共有三种:

JDBC DATE 类型表示由日、月和年组成的日期。相应的 SQL DATE 类型在 SQL-92 中定义,但它仅由主要数据库的一个子集实现。一些数据库提供支持类似语义的替代 SQL 类型。JDBC TIME 类型表示由小时、分钟和秒组成的时间。相应的 SQL TIME 类型在 SQL-92 中定义,但它仅由主要数据库的一个子集实现。与 DATE 一样,一些数据库提供支持类似语义的替代 SQL 类型。JDBC TIMESTAMP 类型表示 DATE 加上 TIME 加上一个纳秒字段。对应的 SQL TIMESTAMP 类型在 SQL-92 中定义,但仅由极少数数据库实现。因为标准的Java 类java.util。Date 与这三种 JDBC 日期/时间类型中的任何一种都不完全匹配(它包括 DATE 和 TIME 信息,但没有纳秒),JDBC 定义了 java.util.Date 的三个子类来对应 SQL 类型。他们是:

java.sql.Date 用于 SQL DATE 信息。java.util.Date 基类的小时、分钟、秒和毫秒字段应设置为零。如果提供给 java.sql.Date 构造函数的毫秒数为负数,则驱动程序会将日期计算为 1970 年 1 月 1 日之前的毫秒数。否则,日期将计算为 1 月 1 日之后的指定毫秒数, 1970 年。

java.sql.Time 用于 SQL TIME 信息。java.util.Date 基类的年、月和日字段设置为 1970、一月和 1。这是 Java 纪元中的“零”日期。java.sql.Timestamp 用于 SQL TIMESTAMP 信息。此类通过添加纳秒字段来扩展 java.util.Date。

于 2013-04-18T12:30:27.687 回答
0

编辑:如果您使用 .xml 进行休眠,则将类型更改为时间戳而不是日期。 <property name="yourdate" column="YOUR_DATE" type="timestamp" /> 因此你有时间在你的数据库上,可以使用 simpledateformat

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy-HH:mm");
dateFormat.format(orWaitinglist.getWPlannedDate());
于 2013-04-18T13:56:54.527 回答
0

而不是java.sql.Date,java.sql.Timestamp并且应该使用匹配方法。oracle 类型DATE等效于 JDBC 和 SQL 标准类型TIMESTAMP

get/setDateJDBC 规范要求驱动程序在使用其中一种方法时排除时间部分。

于 2013-04-18T15:32:56.020 回答