Код, который у тебя есть, работает на меня.Как короткая, но полная программа:
import java.util.*;
import java.sql.*;
public class Test {
public static void main(String[] args) {
long retryDate = System.currentTimeMillis();
int sec = 600;
Timestamp original = new Timestamp(retryDate);
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(original.getTime());
cal.add(Calendar.SECOND, sec);
Timestamp later = new Timestamp(cal.getTime().getTime());
System.out.println(original);
System.out.println(later);
}
}
Вывод:
2011-11-07 10:27:45.302
2011-11-07 10:37:45.302
Обратите внимание на разницу в 10 минут, т.е. 600 секунд.
Конечно, вы теряете сабвуферточность до миллисекунды, что может быть не идеальным - и это идет вразрез с тем, для чего я обычно использую временную метку - но это добавляет добавление секунд ...
Другой вариант - использовать Timestamp
напрямую:
Timestamp original = ...;
Timestamp later = new Timestamp(original.getTime() + (sec * 1000L));
later.setNanos(original.getNanos());