0

我有一个数据库,其中保存了我需要运行某些进程的时间 我做了一个查询,它给出了当前时间和我应该运行该进程的时间之间的差异 例如,我可能会得到这个数字 23 :49:44.835 这意味着我需要在大约 23 小时内运行该过程。我想在毫秒内完成这个过程,所以我做了这个

Date Date = (java.util.Date) (InMsgTstable[index][0]);
long Value3 = Date.getTime();

我得到的日期值是正确的,尽管它删除了存储在我的数据库中的毫秒值。我想以毫秒为单位获得这个小时数/分钟数等,所以我可以将该数字作为调度程序中的毫秒延迟。但是,这给了我以毫秒为单位的错误值。有小费吗?

4

1 回答 1

1

如果您可以控制数据库表,我会将列类型更改为整数类型,并将时间戳以毫秒为单位存储为整数值。

这将允许您将该值视为时间戳DateCalendar在本机使用,而无需处理数据库在日期和时间列上执行的转换。

编辑

从您上面的评论中,我看到您获得的值看起来像是自当天开始以来的毫秒数(根据定义为本地时间,因此请注意数据库中的时区值。)

您使用此时间戳创建的日期位于 1970 年 1 月 1 日,这不是您想要的。

您可以做的是创建一个默认为“现在”的日历对象,备份到一天的开始并获取该时间戳以添加到您从数据库中获得的值中,例如(未经测试):

Calendar cal = Calendar.getInstance();

cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);

long stamp = cal.getTime().getTime() + msgTableValue;

Date dat = new Date(stamp);

这应该给你一个Date代表msgTableValue当天毫秒数的对象。

于 2012-07-18T20:10:14.567 回答