正如问题标题所示,
我有java.sql.Date
和java.sql.Time
作为输入
现在我想将它们转换为DateTime
对象,但由于getDay,getYear等方法已被弃用,我无法弄清楚如何将两者合并......
答案 0 :(得分: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.
答案 1 :(得分:1)
您可以从日期创建一个DateTime对象,并将Duration对象添加到该DateTime对象,从而生成一个对象,即输入所代表的Date + Time即时。
如下所示:
Date d = //your Date
Time t = //your time
DateTime result = new DateTime(d).plus(t.getTime());
这将导致一个Immutable对象代表你想要的瞬间....我理解你的问题,你所追求的是一种“添加”代表时间的两个不同类的方法。
答案 2 :(得分: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);