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
额外的一小时在哪里?
答案 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()))