Witam mam takie pytanko jak prawidłowo ustawić wczorajszą datę (początek i koniec jako java.sql.Timestamp)

przyjmujemy, że początek zaczyna się o północy, a koniec kończy się o 23.59:

czyli jeśli dzisiaj jest 2011.05.18 to start będzie :
-2011.05.17 0000 a koniec 201117 23.59.999

Jak czytam to widzę że są problemy z prawidłowym ustawieniem czasu zaczynającym się od północy
Ja napisałem coś takiego i nie wiem dlaczego raz działa a innym razem nie ://

Calendar today= Calendar.getInstance();
			java.sql.Timestamp start;
			java.sql.Timestamp end;
			Calendar temp =  (Calendar) today.clone();
			temp.add(Calendar.DATE, -1);			
			temp.set(Calendar.HOUR,   0);
			temp.set(Calendar.MINUTE, 0);
			temp.set(Calendar.SECOND, 0);
			temp.set(Calendar.MILLISECOND, 0);
			start = new Timestamp(temp.getTimeInMillis());
			
			temp.set(Calendar.HOUR,   23);
			temp.set(Calendar.MINUTE, 59);
			temp.set(Calendar.SECOND, 59);
			temp.set(Calendar.MILLISECOND, 999);
			end = new Timestamp(temp.getTimeInMillis()); 

po System.out.println raz otrzymuję :

Start: 2011-05-17 0000.0 End: 2011-05-17 2359.999

a innym razem otrzymuję :
Start: 2011-05-17 1200.0 ,End: 2011-05-17 1159.999

W api wyczytałem, że;
23:59 is the last minute of the day and 00:00 is the first minute of the next day
Czyli w sumie nie wiem ocb ?/

Dziękuję za wasze opinie