Convertendo e comparando data

Pessoal.

Estou fazendo um programa que compara 2 datas, sendo que estas 2 datas são 2 strings eu converti o resultado delas para o tipo Date.

Mas o para a comparação que preciso fazer os métodos after ou before não me ajudo pois preciso saber se lastRunDate é maior que a getTime() - 12 horas.

Para isso pensei em converter de Date para long.

Alguém sabe como converter variáveis do tipo Date para Long, ou teriam uma outra forma de fazer esta comparação?

Vejam a minha classe abaixo:
Code:

/*

  • @author Bruno Gambier
    */

import java.io.;
import java.util.
;
import java.util.Date;
import java.security.Timestamp;
import java.util.GregorianCalendar;
import java.text.SimpleDateFormat;
import javax.swing.*;
import java.text.ParseException;
import java.util.Calendar;

public class backupmonitor {
//Nome do job
private String nomeJob = “Teste Backup”;
//Historico sobre a execução do job
String historico;
//Descrição do backup
private String descricao = “Backup full”;
//inicio da execução - hh:mm:ss
private String startTime = “23:59:59”;
//ultima execução* - hh:mm:ss
private String lastRunTime = “000000”;
//Data da ultima execução
private String lastRunDate = “2006-05-12 15:35:03”;
String a[] = lastRunDate.split("-");

//Hora/Minuto da próxima execução
private String nextRunTime = "002000";
//Data da próxima execução
private String nextRunDate = "2006-05-13 18:25:10";
//Tempo de duração da ultima execução
private String lastDuration = "004000";
//Média de tempo de execução
private int medExec;
//Endereço da imagem do fundo da página
private String backGround;
     
private Date last;
private Date next;

   
// Creates a new instance of backupmonitor
public backupmonitor() {
}

// Creates a new instance of backupmonitor
public backupmonitor(String nomeJob, String historico, String descricao,
        String lastRunTime,String lastRunDate, String nextRunTime, String nextRunDate,
        String lastDuration,int medExec, String backGround) {
    this.nomeJob = nomeJob;
    this.historico = historico;
    this.descricao = descricao;
    this.lastRunTime = lastRunTime;
    this.lastRunDate = lastRunDate;
    this.nextRunTime = nextRunTime;
    this.nextRunDate = nextRunDate;
    this.lastDuration = lastDuration;
    this.backGround = backGround;
    this.medExec = medExec;

}

/**public Greg(int year, int month, int dayOfMonth){
    GregorianCalendar greg = new GregorianCalendar();
    this.year  = year;
    this.month = month;
    this.dayOfMonth = dayOfMonth;
   
}**/

//SETs
public void setNomeJob(String nomeJob) { this.setNomeJob(nomeJob); }
public void setHistorico(String historico) { this.setHistorico(historico); }
public void setDescricao(String descricao) { this.setDescricao(descricao); }
public void setLastRunTime(String lastRunTime) { this.setLastRunTime(lastRunTime); }
public void setLastRunDate(String lastRunDate) { this.setLastRunDate(lastRunDate); }
public void setNextRunTime(String nextRunTime) { this.setNextRunTime(nextRunTime); }
public void setNextRunDate(String nextRunDate) { this.setNextRunDate(nextRunDate); }
public void setLastDuration(String lastDuration){ this.setLastDuration(lastDuration); }
public void setBackGround(String backGround) { this.setBackGround(backGround); }
public void setMedExec(int medExec) { this.setMedExec(medExec); }
public void setDateNow(String dateNow) { this.setDateNow(dateNow); }
public void setTimeNow(String timeNow) { this.setTimeNow(timeNow); }

//GETs
public String getNomeJob()      { return nomeJob;     }
public String getHistorico()    { return historico;   }   
public String getDescricao()    { return descricao;   }
public String getLastRunTime()  { return lastRunTime; }       
public String getLastRunDate()  { return lastRunDate; }   
public String getNextRunTime()  { return nextRunTime; }   
public String getNextRunDate()  { return nextRunDate; }   
public String getLastDuration() { return lastDuration;}
public int getMedExec()         { return medExec;     }
public String getBackGround()   { return backGround;  }



/** Retorna a data e horário atual **/
public String Datenow(){
    GregorianCalendar thisday = new GregorianCalendar();// instancia objeto Calenário
    Date today = new Date();// instanciando o objeto Date
    long todayLong = today.getTime() ; //  convertendo Date para Long
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); //
    String daytoday = df.format(today);
    return daytoday;
}


public void ConvDt(){
    GregorianCalendar thisday = new GregorianCalendar(TimeZone.getTimeZone("GMT"),new Locale("pt","BR"));
    Date last = new Date();
    Date next = new Date();
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    try {
          last = df.parse(lastRunDate); 
          next = df.parse(nextRunDate);
          this.last = last;
          this.next = next;
    }
    catch(ParseException pe) {
          System.out.println("Erro na conversão da data");
    }
                 
//Método que calcula a média de execução do backup

}
//método que esta comparando as datas
public boolean execBkp(){
    if (this.next.after(this.last))
        this.historico = "Backup efetuado com sucesso";
       else
        this.historico = "Backup não efetuado";
    return false;
}

}

O método getTime() retorna um long.