我想将LocalTime对象转换为java.sql.Time对象.
java.sql.Time time = new java.sql.Time(new LocalTime(1,0,0,0).getMillisOfDay());
System.out.println(time); //20:00:00
Run Code Online (Sandbox Code Playgroud)
上面的代码创建了一个时间为20:00:00的对象,而不是创建值等于01:00:00的Time对象.当地时间是东部时间.
我应该采取什么措施?
Time(..)
接受从1970年开始的时间戳.所以你应该通过:
new Time(new LocalTime(...).toDateTimeToday().getMillis())
我认为目前接受的答案是不正确的.虽然java.sql.Time暗示其日期字段设置为1970-1-1,但事实并非如此.如果您使用转换
new java.sql.Time(new LocalTime(...).toDateTimeToday().getMillis())
Run Code Online (Sandbox Code Playgroud)
那么java.sql.Time对象的内部millesecond表示将反映今天的日期.在比较java.sql.Time对象时,这会导致意外行为.比较是在毫秒值上进行的,如果基础日期不同,则时间字段与比较结果无关
更好的方法是使用java.sql.Time中不推荐使用的构造函数和方法显式使用时间字段:
LocalTime localTime = new LocalTime(1,0,0,0);
java.sql.Time sqlTime = new java.sql.Time(localTime.getHourOfDay(), localTime.getMinuteOfHour(), localTime.getSecondOfMinute())
Run Code Online (Sandbox Code Playgroud)
同样,在另一个方向
java.sql.Time sqlTime = new java.sql.Time(1,0,0);
LocalTime localTime = new LocalTime(sqlTime.getHours(), sqlTime.getMinues(), sqlTime.getSeconds());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5680 次 |
最近记录: |