Tôi có khoảng thời gian JodaTime mà tôi đã tạo từ hai phiên bản DateTime. Có cách nào tốt để chuyển đổi Khoảng thời gian đó thành số thập phân của giờ không?Bất kỳ cách nào để chuyển đổi Thời gian JodaTime thành số thập phân của giờ?
Ví dụ: tôi có một khoảng thời gian từ 1 giờ chiều đến 1 giờ 30 chiều ngày 1 tháng 1 năm 2010. Làm cách nào tôi có thể nhận được khoảng thời gian đó là 1,5 giờ.
Trong quá khứ tôi đã tự chuyển đổi bằng giây và BigDecimals như thế này:
int seconds = myPeriod.toStandardSeconds().getSeconds();
BigDecimal d = new BigDecimal((double) seconds/3600);
// Round to two decimals
BigDecimal correctResult = d.setScale(2, RoundingMode.HALF_DOWN);
Đây là loại cảm giác giống như một hack, chưa kể đến lúng túng khi tôi bắt đầu Thời hạn thêm với nhau. Có vẻ như có một cách tốt hơn.
Bất kỳ ý tưởng nào? Cảm ơn
Bạn nên tránh "tăng gấp đôi". Cách tiếp cận chung của bạn là đúng, chỉ cần nhận được giây trong BigDecimal đầu tiên và sau đó chia nó bằng BigDecimal.valueOf (3600) thay vì đi qua một diễn viên đôi. Trong trường hợp này nó có thể không tạo ra nhiều nếu có bất kỳ sự khác biệt nào, nhưng đó là thực hành tốt. –