2

正如问题标题所说,

我有java.sql.Datejava.sql.Time作为输入

现在我想将它们转换为一个DateTime对象,但是由于不推荐使用 getDay、getYear 等方法,我无法弄清楚如何将两者结合起来......

4

3 回答 3

2

看看这是否对你有用。

Date date = new Date(System.currentTimeMillis()); // Prints 2013-03-08
Time time = new Time(System.currentTimeMillis()); // Prints 15:40:33

String myDate = date + " " + time;

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date utilDate = new java.util.Date();
try {
    utilDate = sdf.parse(myDate); // You get a Java Util Date object(Fri Mar 08 15:40:33 IST 2013)
} catch (ParseException pe) {
   // TODO something.
}

DateTime dateTime = new DateTime(utilDate); // You get your JODA object.
于 2013-03-08T10:12:31.033 回答
1

您可以从日期创建一个 DateTime 对象并将 Duration 对象添加到该 DateTime 对象,从而生成一个对象,该对象是您的输入表示的 Date + Time 瞬间。

类似于以下内容:

Date d = //your Date
Time t = //your time

DateTime result = new DateTime(d).plus(t.getTime());

这将产生一个表示您想要的瞬间的不可变对象......我正确理解了您的问题,而您所追求的是一种“添加”两个代表时间的不同类的方法。

于 2013-03-08T10:14:35.440 回答
0

只需对 java.sql.Time 做一些技巧:计算持续时间。java.sql.Time 将日期组件隐式设置为 1970 年 1 月 1 日。

    java.sql.Date epoch = new Date(70, 0, 1);
    java.sql.Date date = new Date(113, 2, 8);
    java.sql.Time time = new Time(1, 1, 1);
    DateTime dt = new DateTime(date.getTime())
            .plus(time.getTime() - epoch.getTime());
    System.out.println(date);
    System.out.println(time);
    System.out.println(dt);
于 2013-03-08T10:10:04.110 回答