tôi xem xét các câu trả lời chấp nhận hiện nay là không chính xác. Mặc dù java.sql.Time ngụ ý rằng các trường ngày tháng của nó được đặt là 1970-1-1, điều này không đúng. Nếu bạn sử dụng chuyển đổi
new java.sql.Time(new LocalTime(...).toDateTimeToday().getMillis())
thì biểu diễn millesecond nội bộ của đối tượng java.sql.Time sẽ phản ánh ngày hôm nay. Điều này dẫn đến hành vi bất ngờ khi so sánh các đối tượng java.sql.Time. So sánh được thực hiện trên giá trị mili giây và nếu các ngày cơ bản khác nhau, các trường thời gian không liên quan đến kết quả so sánh
Phương pháp tốt hơn là làm việc rõ ràng với các trường thời gian, sử dụng hàm tạo và phương thức không được chấp nhận trong 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())
Tương tự, theo một hướng khác
java.sql.Time sqlTime = new java.sql.Time(1,0,0);
LocalTime localTime = new LocalTime(sqlTime.getHours(), sqlTime.getMinues(), sqlTime.getSeconds());
Nguồn
2013-06-09 11:24:58
Sử dụng phương pháp phản đối là xấu thực hành. – pgerstoft
Chắc chắn nó là, nhưng bạn phải biết khi nào để phá vỡ các quy tắc. Các phương pháp không được chấp nhận này là cách đơn giản và hiệu quả nhất để đạt được mục tiêu, và không có kế hoạch loại bỏ chúng khỏi Java trong tương lai gần. Thành thật mà nói, Sun không bao giờ nên phản đối họ; sự lộn xộn khủng khiếp thay thế chúng là toàn bộ lý do để chuyển sang việc thực hiện sạch hơn như JodaTime. –