将java.util.date与java.sql.Time合并

mar*_*pes 4 java sql time merge date

我有一个广泛的DATE-TIME转换类,但我遇到了一个我无法解决的场景:

我有一个java.util.date:Tue May 10 00:00:00 BST 2011
我有一个java.sql.time:03:58:44

我需要创建一个java.util.date:Tue May 10 03:58:44 BST 2011

我想出的唯一方法是:

public static Date getDate(Date date, Time time) {
    Calendar calendar=Calendar.getInstance();
    calendar.set(date.getYear(), date.getMonth(), date.getDay(), time.getHours(), time.getMinutes(), time.getSeconds());
    return calendar.getTime();
}
Run Code Online (Sandbox Code Playgroud)

完全弃用的代码,不起作用:java.sql.Time.getYear(Unknown Source)中的java.lang.IllegalArgumentException

有任何想法吗?

aca*_*pso 10

java.sql.Time只是java.util.Date的包装器.您可以像使用添加两个java.util.Date对象一样使用它.

例如,将Calendar设置为java.sql.Time:

calendar.setTime(time);
Run Code Online (Sandbox Code Playgroud)

现在提取小时/分钟/秒字段,即:

calendar.get(Calendar.HOUR);
Run Code Online (Sandbox Code Playgroud)

接下来,将Calendar设置为java.util.Date对象,并将这三个字段添加到其时间,即:

calendar.add(Calendar.HOUR, hour);
Run Code Online (Sandbox Code Playgroud)

并获取日期:

calendar.getTime();
Run Code Online (Sandbox Code Playgroud)

  • 只是一句话:我们必须使用HOUR_OF_DAY来尊重24小时格式. (2认同)

vic*_*irk 5

最简单的方法是将毫秒加在一起来创建一个新的日期,ala

public static Date getDate(Date date, Time time) {
    return new Date(date.getTime() + time.getTime())
}
Run Code Online (Sandbox Code Playgroud)