为什么 Java 向我的 DateTime 添加 1h?

Why is Java adding 1h to my DateTime?

我有两个 DateTime (Joda) 变量:

 DateTime from = new DateTime(2015, 1, 1, 0, 0, 0, 0);
 DateTime to = new DateTime(2015, 3, 31, 0, 0, 0, 0);

我将这些变量传递给另一个方法:

AtmosphericDb.GetParameterMetaRecords(AtmosphericParameter.Dust_Coarse, from , to);

SQL 查询中使用了这些日期:

String sql = "SELECT * 
              FROM metalinks 
              WHERE parameter_name = ? 
              AND date_from >= ? 
              AND date_to <= ?; ";

PreparedStatement preparedStatement = metaStoreConnection.prepareStatement(sql);
preparedStatement.setString(1, parameter.name().replace('_', '-').toLowerCase());
preparedStatement.setDate(2, new java.sql.Date(from.toDate().getTime()));
preparedStatement.setDate(3, new java.sql.Date(to.toDate().getTime()));
ResultSet resultset = preparedStatement.executeQuery();

一切正常,但是当我没有得到预期的结果时,我发现传递给 SQL 查询中的 to 参数的 DateTime 不正确。

System.out.println(preparedStatement);

上面这行代码打印出如下内容:

SELECT * 
FROM metalinks 
WHERE parameter_name = 'dust-coarse' 
AND date_from >= '2015-01-01 +00:00:00' 
AND date_to <= '2015-03-31 +01:00:00'

现在,为什么 2015-03-31 +01:00:00 中有 +01:00:00 而不是 +00:00:00

英国在 3 月 26 日从标准时间 +00:00:00 改为夏令时 +01:00:00。毫无疑问,您 运行 您的程序在设置为本地的平台上英国时间。

编辑:2015 年是 3 月 29 日。