【发布时间】:2014-07-08 15:03:29
【问题描述】:
我有一个数据库,我从中检索显示提醒的时间(这是我的任务)。我将收到的时间放入计时器,但它不是在此时显示提醒,而是在当前时间立即显示。有什么问题?
rs = stmt.executeQuery(sql);
while(rs.next()){
time=rs.getString ("time");
}
timer = new Timer(); // Instantiate Timer Object
timer.schedule(new Task(), timeFormat.parse(time));
例如,显示提醒的时间是 17:10:00。但它显示在 17:00:00
【问题讨论】:
-
看起来缺少日期信息,因此默认为空白日期(可能是 1970 年 1 月 1 日),这意味着计时器将立即运行任务。
timeFormat是什么?它是SimpleDateFormat对象吗?另外,您从数据库中获得的time字符串是什么?尝试在数据库中存储一个实际的TIMESTAMP并改用rs.getDate(String)。 -
见stackoverflow.com/questions/11794313/…new TimerTask()
-
非常感谢。问题与您写的完全一样(解析时间后,日期自动变为 01.01.1970)。通过连接提醒的实际日期(它存储在我的数据库中的单独列中)及其时间来解决它,所有这些我都像字符串一样检索。只有在那之后,我才使用 SimpleDateFormat("yyyy-MM-dd HH:mm:ss") 进行解析,并将结果设置到我的计时器中。