我有一个数据库,可以保存我需要运行某些进程的时间 我做了一个查询,它给出了当前时间和我应该运行该过程的时间之间的差异 例如,我可能会得到这个数字23:49:44.835,这意味着我需要在大约23个小时内运行该过程。 我想在几毫秒内完成这个过程,所以我已经完成了这个
Date Date = (java.util.Date) (InMsgTstable[index][0]);
long Value3 = Date.getTime();
我得到的日期值是正确的,但它会丢弃存储在我的数据库中的毫秒值。 我想以毫秒为单位得到这个小时/分钟等数,所以我可以把这个数字作为调度程序中的毫秒延迟。但是,这给了我错误的值,以毫秒为单位。 有什么提示吗?
答案 0 :(得分:1)
如果您控制数据库表,我会将列类型更改为整数类型,只需将时间戳以毫秒为单位存储为整数值。
这将允许您将值视为Date
和Calendar
本机使用的时间戳,而无需处理数据库在日期和时间列上执行的转换。
修改强>
从上面的评论中我看到你得到的值看起来像是当天开始以来的毫秒数(根据定义是本地时间,所以要注意数据库中的时区值。)
使用此时间戳创建的日期位于1970年1月1日,这不是您想要的。
你可以做的是创建一个默认为“now”的日历对象,备份到一天的开始并获取时间戳以添加到从数据库获得的值,类似于(未经测试):< / p>
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
毫秒。