java.sql.Date到joda时间转换

时间:2012-01-13 04:06:50

标签: java sql oracle jodatime

oracle sql:

select trunc( sysdate, 'Month') month
from dual

的java:

java.sql.Date sqlDate = resultSet.getDate("month");
log.info(sqlDate);
DateTime dateTime = new DateTime(sqlDate.getTime());
log.info(dateTime);
dateTime = dateTime.withMillisOfDay(0);
log.info(dateTime);

输出:

2012-01-01

2012-01-01T 01 :00:00.000 + 07:00

2012-01-01T 00 :00:00.000 + 07:00

额外的一小时在哪里?

3 个答案:

答案 0 :(得分:15)

使用LocalDate.fromDateFields(date)将SQL日期解释为本地(忽略时区)。然后,您可以使用LocalDate上的方法在必要时获取DateTime(尽管如果您的对象确实是"只是日期"那么LocalDate是正确的对象

答案 1 :(得分:0)

默认构造函数使用系统默认构造函数,这可能导致与DST有关的问题。我发现toDateMidnight函数在确保我实际上是在午夜时非常有用。

答案 2 :(得分:0)

您应该尝试此代码。

LocalDate issueDate = new LocalDate(new Date());
System.out.println(new java.sql.Date(issueDate.toDate().getTime()))