2013-03-08 6 views
2

Как говорит название вопроса,java.sql.Date и java.sql.Time к org.joda.time.DateTime

У меня есть java.sql.Date и java.sql.Time в качестве входных данных

Теперь я хочу, чтобы преобразовать их в a DateTime объект, но поскольку методы getDay, getYear и т. д. устарели, я не могу понять, как объединить два ...

+0

Можете ли вы получить «длинный» из типов данных sql и использовать это для создания даты joda DateTime? – vikingsteve

+0

Я могу получить длинный от обоих, но добавление их вместе не делает работу ... – Luc

+0

Какова идея добавления этих типов? Оба они представляют время со времен Эпохи. – 2013-03-08 10:02:37

ответ

2

Просто посмотрите, подходит ли это для вас.

Date date = new Date(System.currentTimeMillis()); // Prints 2013-03-08 
Time time = new Time(System.currentTimeMillis()); // Prints 15:40:33 

String myDate = date + " " + time; 

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
java.util.Date utilDate = new java.util.Date(); 
try { 
    utilDate = sdf.parse(myDate); // You get a Java Util Date object(Fri Mar 08 15:40:33 IST 2013) 
} catch (ParseException pe) { 
    // TODO something. 
} 

DateTime dateTime = new DateTime(utilDate); // You get your JODA object. 
+0

Вы, сэр, я благодарю много! – Luc

+1

Использование форматирования для создания даты неэффективно и игнорирует богатый API-интерфейс Joda. Почему бы просто не объединить LocalDate и LocalTime в DateTime? – bowmore

0

Просто сделайте несколько трюков на java.sql.Time: вычислите продолжительность. java.sql.Time устанавливают компоненты даты до 1 января 1970 года неявно.

java.sql.Date epoch = new Date(70, 0, 1); 
    java.sql.Date date = new Date(113, 2, 8); 
    java.sql.Time time = new Time(1, 1, 1); 
    DateTime dt = new DateTime(date.getTime()) 
      .plus(time.getTime() - epoch.getTime()); 
    System.out.println(date); 
    System.out.println(time); 
    System.out.println(dt); 
1

Вы можете создать объект DateTime с даты и добавить объект Duration к этому DateTime объекта, в результате чего один объект whcih является дата + время момент времени представляет ваш вход.

Что-то вроде следующего:

Date d = //your Date 
Time t = //your time 

DateTime result = new DateTime(d).plus(t.getTime()); 

Это приведет к непреложный объекта, представляющего момент, когда вы хотите .... II правильно понял ваш вопрос и что вы после это способ «добавить» два различные классы, представляющие время.

Смежные вопросы