[英]How to create a joda time duration from java.sql.Time?
您好,我有這段代碼摘錄:
end = new DateTime(mergeToDateTime(this.endDate, this.empEndTime));
Duration extraTime = new Duration(this.preTime.getTime()); //add the first 30 mins
extraTime = extraTime.plus(new Duration(this.postTime.getTime())); //add the second 30 mins
end = end.plus(extraTime); // extraTime = -3600?
當我查看調試器時,我的持續時間總是為負。 我不知道為什么會這樣,即使根據API ,也可以從long類型中創建持續時間,因此可以創建getTime() 。 ( preTime和postTime是java.sql.Time類型)
我猜想您的java.sql.Time
實例是以這樣的方式創建的,即它們的毫秒值包括時區偏移量。
例如,不建議使用的java.sql.Time(int hour, int minute, int second)
構造函數會將當前時區的偏移量考慮在內:
System.out.println(new Time(1, 0, 0).getTime()); // Prints -7200000 in UTC+3 timezone
好像時區偏移是JDBC驅動程序引入的,可以通過將java.sql.Time
轉換為LocalTime
來容易地補償( 反之亦然 ):
LocalTime lt = new LocalTime(time);
然后,您可以將LocalTime
轉換為持續時間:
Duration d = new Duration(lt.getMillisOfDay());
當您使用即時作為持續時間時,您不是從錯誤開始嗎? 您使用的構造函數簽名是Duration(long duration)
,而不是Duration(long startInstant)
-實際上,沒有這樣的構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.