我有一个 Access 数据库,其中有一列日期和时间以及一个时区,如下所示:
所以,首先我要像这样创建一个 TimeZone 对象和一个 SimpleDateFormat 对象
TimeZone timeZone = TimeZone.getTimeZone(parseNull(rs.getString("TimeZone")));
DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormatter.setTimeZone(timeZone);
然后,我正在阅读这样的日期:
String startDateString = rs.getDate("Start_Date") + " " + rs.getString("Start_Time").substring(11);
startDate = dateFormatter.parse(startDateString);
但是,如果我像这样打印出日期:
System.out.println("Start Actual: " + rs.getDate("Start_Date") + " " + rs.getString("Start_Time").substring(11));
System.out.println("Start Formatted: " + startDate);
我得到以下输出:
Start Actual: 2011-11-10 18:00:00
Start Formatted: Thu Nov 10 02:00:00 EST 2011
好吧……为什么?我觉得这很令人困惑。为什么我的 Date 对象不能在澳大利亚/悉尼时区正确显示,更好的是,我怎样才能让它正确工作,以便我可以在我的应用程序中正确设置日期?
提前感谢您的帮助!