2016-11-03 4 views
1

Я работаю над проектом Java, в котором у меня есть объект Time в другом столбце. Но для некоторых целей запроса мне нужно время как часть отметки времени. По этой причине я решил назвать setTime метод java.sql.Timestamp, но она сбрасывает дату в 1970.Java: установить временную часть java.SQL.Timestamp без изменения даты

Как я могу только изменить часть времени в java.sql.Timestamp?

Код:

  object.getTimestamp().setTime(object.getTTime().getTime()); 

Спасибо.

+1

Привет, можете ли вы объяснить немного больше того, что вы пытаетесь сделать, возможно, разместите свой запрос или еще код? – karelss

+0

@karelss: Конечно. У меня есть два объекта: java.SQL.Timestamp и другое - Time. Я хочу установить только временную часть в меток времени, сохраняя постоянную дату в ней. Источником времени является объект Time. –

+0

Вам нужно работать с длинным представлением времени и извлекать часть времени и добавлять его к другому объекту, я думаю, – karelss

ответ

2

Работа как с нормальным java.util.Date, обновить часть времени с помощью Calendar, затем обновить временную метку с

setTime(long time) 

Пример

  Calendar c=Calendar.getInstance(); 
    c.setTimeInMillis(time.getTime()); 
    c.set(Calendar.HOUR_OF_DAY, 0); 
    c.set(Calendar.MINUTE, 0); 
    c.set(Calendar.SECOND, 0); 
    c.set(Calendar.MILLISECOND, 0); 

    ts.setTime(c.getTimeInMillis()); 
    System.out.println(ts.getTime()); 

РЕДАКТИРОВАТЬ

Пример 2

Timestamp ts; 
    //give some value to ts 
    Time time ; 
    //give some value to time 

    //Calendar based on ts   
    Calendar cTs=Calendar.getInstance(); 
    cTs.setTimeInMillis(ts.getTime()); 

    //Calendar based on time 
    Calendar cTime=Calendar.getInstance(); 
    cTime.setTimeInMillis(time.getTime()); 

    cTs.set(Calendar.HOUR_OF_DAY, cTime.get(Calendar.HOUR_OF_DAY)); 
    cTs.set(Calendar.MINUTE, cTime.get(Calendar.MINUTE)); 
    cTs.set(Calendar.SECOND, cTime.get(Calendar.SECOND)); 
    cTs.set(Calendar.MILLISECOND, cTime.get(Calendar.MILLISECOND)); 

    //set value of ts based on the modified cTs 
    ts.setTime(cTs.getTimeInMillis()); 
    System.out.println(ts.getTime()); 
+0

Что вы подразумеваете под работами как обычно с Date? Можете ли вы описать, что вы хотите сказать, я не понимаю. –

+0

см. Пример в моем ответе – Massimo

+0

И в вашем примере выше, где вы устанавливаете часы и минуты из объекта Time? –

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