簡體   English   中英

如何從java.sql.Time創建joda時間長度?

[英]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() preTimepostTimejava.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM