【问题标题】:java.sql.Date and java.sql.Time to org.joda.time.DateTimejava.sql.Date 和 java.sql.Time 到 org.joda.time.DateTime
【发布时间】:2013-03-08 09:47:19
【问题描述】:

正如题目所说,

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

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

【问题讨论】:

  • 你能从sql数据类型中得到一个long,并用它来构造一个joda DateTime吗?
  • 我可以从两者中得到很长的结果,但是将它们加在一起并不能完成这项工作......
  • 添加这些类型背后的想法是什么?它们都代表了一个时代以来的时间。
  • 您可以将java.sql.Datejava.sql.Time 传递给Joda 的DateTime 的构造函数,但听起来您想要的不仅仅是这些。 “将它们加在一起”到底是什么意思?
  • 听起来他的日期存储在一列中,而时间存储在他数据库的另一列中。卢克,你能解释一下吗?

标签: java date datetime time jodatime


【解决方案1】:

看看这是否对你有用。

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.

【讨论】:

  • 使用格式化构造 Date 效率低下,并且忽略了 joda time 的丰富 API。为什么不简单地将 LocalDate 和 LocalTime 组合成一个 DateTime?
【解决方案2】:

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

类似于以下内容:

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

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

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

【讨论】:

    【解决方案3】:

    只需对 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-20
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多