uważam obecnie akceptowana odpowiedź będzie błędna. Chociaż java.sql.Time oznacza, że jego pola daty są ustawione na 1970-1-1, nie jest to prawdą. Jeśli używasz konwersję
new java.sql.Time(new LocalTime(...).toDateTimeToday().getMillis())
następnie wewnętrzna reprezentacja millesecond obiektu java.sql.Time będzie odzwierciedlać dzisiejszą datę. Prowadzi to do nieoczekiwanego zachowania podczas porównywania obiektów java.sql.Time. Porównania są wykonywane w milisekundach, a jeśli daty bazowe są różne, pola czasu są nieistotne dla wyniku porównania.
Lepszą metodą jest bezpośrednia praca z polami czasowymi przy użyciu przestarzałego konstruktora i metod w 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())
Podobnie, w drugim kierunku
java.sql.Time sqlTime = new java.sql.Time(1,0,0);
LocalTime localTime = new LocalTime(sqlTime.getHours(), sqlTime.getMinues(), sqlTime.getSeconds());
Korzystanie przestarzałe metody jest złą praktyką. – pgerstoft
Oczywiście, ale musisz wiedzieć, kiedy złamać zasady. Te nieaktualne metody są najprostszym i najskuteczniejszym sposobem osiągnięcia tego celu. W najbliższej przyszłości nie planuje się ich usuwania z Javy. Szczerze mówiąc, Sun nigdy nie powinien ich zdeprecjonować; okropny bałagan, który je zastępuje, jest jedynym powodem, aby przejść do czystszej implementacji, takiej jak JodaTime. –