【发布时间】:2011-08-10 08:48:06
【问题描述】:
你能帮忙解决一下吗:
我定义了一个变量:
Time from_time = rs.getTime("nfrm_time");
它将读取 7:15:00 的值
如何将此类型转换为秒?
【问题讨论】:
你能帮忙解决一下吗:
我定义了一个变量:
Time from_time = rs.getTime("nfrm_time");
它将读取 7:15:00 的值
如何将此类型转换为秒?
【问题讨论】:
调用getTime获取自1970年1月1日以来的毫秒数。除以1000以秒为单位:
long unixTime = from_time.getTime() / 1000;
要获取自当前天 00:00 开始的秒数,请使用
Calendar c = Calendar();
c.setTime(from_time);
long daySeconds = (c.get(Calendar.SECONDS) +
c.get(Calendar.MINUTES) * 60 +
c.get(Calendar.HOURS) * 3600);
【讨论】:
long seconds = rs.getTime("nfrm_time").getTime() / 1000
解释如下:
rs.getTime("nfrm_time") 返回java.sql.Time,它实际上是java.util.Date 的子类。
java.util.Date.getTime() 以毫秒为单位返回时间,除以1000 得到秒数。
注意:
如果您正在寻找持续时间,
Calendar cal = Calendar.getInstance();
cal.setTime(rs.getTime("nfrm_time")); // set to the time returned by resultset
cal.set(0, 0, 0); // reset the year, month and date fields
Calendar cal2 = Calendar.getInstance();
cal2.set(0, 0, 0, 0, 0, 0); // reset all the fields, including time
long duration = ((cal.getTimeInMillis() - cal2.getTimeInMillis()) / 1000) + 1;
【讨论】:
试试:
from_time.getTime() / 1000
这可能会起作用:
日期组件应设置为 1970 年 1 月 1 日的“零纪元”值,并且不应访问。
这意味着日期部分始终是纪元日,这意味着Time 实例由自一天开始以来的毫秒数表示。
【讨论】:
java.sql.Time 继承自 java.util.Date,它有一个 getTime() 方法,它返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。
所以from_time.getTime()/1000 应该可以解决问题。
【讨论】:
更清洁的方法是
Time from_time = Math.round(rs.getTime("nfrm_time")/1000);
【讨论】:
获取毫秒数:
long ms = from_time.getTime();
【讨论】: