public class TimeTest {
static PeriodFormatter pf = new PeriodFormatterBuilder()
.printZeroAlways()
.minimumPrintedDigits(2)
.appendHours()
.appendSeparator(":")
.appendMinutes()
.toFormatter();
public static void main(String[] args) {
System.out.println(strToTime("13:00"));
System.out.println(diminuiHora("14:00","13:00"));
Period periodo = new Period(strToTime(diminuiHora("14:00","13:00")).getTime());
System.out.println(periodo.toString(pf));
}
public static Date strToTime(String str) {
if (str != null && !str.equals("") ) {
SimpleDateFormat formatoHora = new SimpleDateFormat("HH:mm");
//formatoHora.setTimeZone(TimeZone.getTimeZone("GMT"));
Date hora;
try {
hora = new Time(formatoHora.parse(str).getTime());
return hora;
} catch (ParseException e) {
JOptionPane.showMessageDialog(null, "ATENÇÃO! '"+str+"' Hora inválida.");
return null;
}
}
else {
return null;
}
}
public static String diminuiHora(String hora, String add) {
//Periodo a ser diminuido
String [] arraySomado = hora.split(":");
int h = Integer.parseInt(arraySomado[0]);
int m = Integer.parseInt(arraySomado[1]);
Period diminuido = new Period(h, m, 0, 0);
//Periodo a diminuir
String [] arraySomar = add.split(":");
int h2 = Integer.parseInt(arraySomar[0]);
int m2 = Integer.parseInt(arraySomar[1].length() == 1 ? arraySomar[1]+"0" : arraySomar[1]);
Period diminuir = new Period(h2, m2, 0, 0);
//Diminui
diminuido = diminuido.minus(diminuir);
//Normaliza
diminuido = diminuido.normalizedStandard(PeriodType.time());
return diminuido.toString(pf);
}
}
PS.: Executa assim a primeira vez e olhem os resultados. Depois descomente a linha de setTimezone e rode novamente