如何获取java.sql.Time表示的毫秒数?
我有一个如何获取java.sql.Time表示的毫秒数?,java,sql,jdbc,mariadb,Java,Sql,Jdbc,Mariadb,我有一个java.sql.Time(00:04:24),我想从中获取毫秒(或秒)数: 但是结果是-3336000,而不是264000 单击以查看我的输出 为什么输出不是264000?如果您使用的是现代JDBC版本,则可以使用: LocalTime time = rs.getObject("DURATION", LocalTime.class); long millis = time.toSecondOfDay() * 1000 + time.get(MILLI_OF_SECOND); 关于毫秒
java.sql.Time
(00:04:24)
,我想从中获取毫秒(或秒)数:
但是结果是-3336000
,而不是264000
单击以查看我的输出
为什么输出不是
264000
?如果您使用的是现代JDBC版本,则可以使用:
LocalTime time = rs.getObject("DURATION", LocalTime.class);
long millis = time.toSecondOfDay() * 1000 + time.get(MILLI_OF_SECOND);
关于毫秒的计算,不幸的是,没有方法可以得到一天中的毫秒,因为我是这样使用的
或根据以下建议:
数据库列类型是什么?如果服务器返回文本
“00:04:24”
作为列值,JDBC驱动程序可能会将其解析为当前时区,如果您的时区是CEST,即GMT+1,则1970-01-01T00:04:24
(264000)变为1969-12-31T23:04:24Z
(-3336000)试试这个:java.time.LocalTime.parse(rs.getString(“DURATION”)).toSecondOfDay()
为什么不long millis=time.toNanoOfDay()/1000000
?
LocalTime time = rs.getObject("DURATION", LocalTime.class);
long millis = time.toSecondOfDay() * 1000 + time.get(MILLI_OF_SECOND);
long millis = time.toNanoOfDay() / 1000000