2

I'm new to joda-time and I didn't find anywhere examples to do some simple things.

I want to make an object where to save a time value read from a table in a database (a java.sql.Time - e.g. "18:30:00") I don't care about time zone, so I think that I need LocalDate. But the problem is that I couldn't create a LocalDate object based on that Time object.

I tried with no success LocalDate.fromDateFields(), DateTimeParser.parseInto(), DateTimeParser.parseDateTime().

EDIT: I should have used LocalTime. These work:

java.sql.Time time = Time.valueOf("18:30:00");
LocalTime lt1 = LocalTime.fromDateFields(time);
LocalTime lt2 = new LocalTime(time);
4
  • org.joda.time.LocalDate represents a date, java.sql.Time represents a time. What meaningful conversion would you expect to get from that? Commented Dec 14, 2009 at 14:24
  • I saw that YearMonthDay and TimeOfDay were classes where you don't need all the datetime fields (partial). But when I wanted to use them, there were deprecated and it said use LocalDate and LocalTime. Now I see that I should have used LocalTime. But it doesn't work with this neither. Commented Dec 14, 2009 at 14:37
  • How would one go the other around. I am trying to convert fom LocalTime to sql time, but I noticed the getMillis()* functions of LocalTime return ints. I want to void having to shuttle it through DateTime. Commented Apr 30, 2012 at 9:24
  • @DarkStar1: I think getMillisOfDay() would work, if you only need the time fields. They return ints because there are only 86,400,000 millis in a day. Commented May 1, 2012 at 13:10

1 Answer 1

4

According to the documentation, you should be able to construct a LocalDate directly by passing it a java.util.Date as the sole constructor argument. Since a java.sql.Time extends java.util.Date, you should be able to

final LocalDate ld = new LocalDate(mySqlTime);

This works for me:

System.out.println(new LocalDate(Time.valueOf("18:30:00")));

On the other hand, it's not a meaningful thing to do, since you'll always get January 1, 1970. But I imagine you know what you're doing.

Sign up to request clarification or add additional context in comments.

2 Comments

I already tried LocalDate ld = new LocalDate(Time.valueOf("18:30:00")); and it gives java.lang.UnsupportedOperationException
Only somewhat related, but using the LocalDate constructor with values from a database you have to be careful: null values will be converted into the current date (which may very well not be what you want).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.