Controlla cosa effettivamente viene memorizzato nella variabile temp, e che ti restituisca un oggetto di tipo data che rappresenti la data che hai fissato...
Dato che non so cosa sia temp e come viene implementato il metodo getsubdate non so dirti altro
(tra l'altro il costruttore di date in cui gli passi i millisecondi attuali è ridondante: viene già inizializzata con la data del momento della sua allocazione)