Problema com Time ( usando JodaTime )

0 respostas
TheKill
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

Criado 28 de setembro de 2011
Respostas 0
Participantes 1