Somar horas

Olá Pessoal, gostaria de saber como somar horas em Java.
Por exemplo: 10:30 + 00:30 = 11:00.
Alguém sabe como ?

q tal converter a hora em long somar e depois converter p hora novamente. tenta ai…

Já tentei, não da certo, somo 10:30:00 com 00:30:00 e me devolve 14:00:00.

Vc pode utilizar um Calendar para somar o que quiser em uma data.

O exemplo abaixo cria uma data com a hora corrente e adiciona 30 minutos:

    GregorianCalendar gc = new GregorianCalendar();
    gc.setTime(new Date());
    
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
    System.out.println(sdf.format(gc.getTime()));
    
    gc.add(Calendar.MINUTE,30);
    System.out.println(sdf.format(gc.getTime()));
1 curtida

Essas classes são de qual pacote???

Coloquei java.util, mas da erro, pois a classe SimpleDateFormat não está nesse pacote…

Segue o codigo com os pacotes explicitos:

    java.util.GregorianCalendar gc = new java.util.GregorianCalendar();
    gc.setTime(new java.util.Date());
        
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("hh:mm:ss");
    System.out.println(sdf.format(gc.getTime()));
        
    gc.add(java.util.Calendar.MINUTE,30);
    System.out.println(sdf.format(gc.getTime()));

Obrigado…

Acho o esquema do long melhor.

date = new Date();  // sei lá, você conseguiu a data de alguma forma
date = new Date(date.getTime() + 30 * 60 * 1000); // soma 30 minutos

Para 30 minutos pode ateh ser, agora tenta 30 anos…

    GregorianCalendar gc = new GregorianCalendar();
    gc.setTime(new Date());
    gc.add(Calendar.YEAR, 30);

Olá pessoal,

Bem tenho uma pequena duvida, então lá vai.

eu gostaria de saber como buscar a hora atual do sistema de hora-em-hora.

O meu problema é o seguinte. Preciso exibir uma mensagem de 1 em 1 hora, mas eu conheço muito pouco o Calendar ou Date. Até consigo pegar a data atual mas 1x, ai eu consigo somar, subtrair etc.
mas não sei como faço para que meu programa faça um loop que ele verifique se já passou 1 hora desde a ultima vez.

obrigado :slight_smile:

[quote=hessel]Olá pessoal,

Bem tenho uma pequena duvida, então lá vai.

eu gostaria de saber como buscar a hora atual do sistema de hora-em-hora.

O meu problema é o seguinte. Preciso exibir uma mensagem de 1 em 1 hora, mas eu conheço muito pouco o Calendar ou Date. Até consigo pegar a data atual mas 1x, ai eu consigo somar, subtrair etc.
mas não sei como faço para que meu programa faça um loop que ele verifique se já passou 1 hora desde a ultima vez.

obrigado :)[/quote]

Cara…
Dê umada nas classes Timer e TimerTask

http://java.sun.com/j2se/1.4.2/docs/api/index.html

Talvez possam lhe ajudar

Valew mesmo :smiley:

pesquisei essas classes e resolvi meu problema

muito obrigado

Se você precisa trabalhar com horas (somar, estipular períodos, etc), o ideal é não usar a API do Java, que é péssima.

Melhor mesmo é usar a Joda Time:
http://joda-time.sourceforge.net/

Que está até sendo adaptada para fazer parte da API nas próximas versões. Facilita MUITO o trabalho.

Ai pessoal eu fiz um exemplo onde é possível somar hora e me retornará a data + hora.

Exemplo abaixo:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class Main {

public static void main(String[] args) throws ParseException {
    Date hoje = new Date();
    String formato = "dd/MM/yyyy";
    SimpleDateFormat formatter = new SimpleDateFormat(formato);
    System.out.println("A data formatada é: "+ formatter.format(hoje)); 
             
    GregorianCalendar gc = new GregorianCalendar();  
    gc.setTime(new Date());  

    SimpleDateFormat sdf  = new SimpleDateFormat("HH:mm:ss");  
    SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");  
    System.out.println("HORA ATUAL: "+sdf.format(gc.getTime()));  
    ///AQUI EU SETO A HORA QUE QUERO SOMAR E MAIS OS MINUTOS, SE QUISER SOMAR OS SEGUNDO É SÓ COLOCAR O SEGUNDOS PARA SOMAR
    gc.add(Calendar.HOUR,24);  
    gc.add(Calendar.MINUTE,30);  
    ///
    System.out.println("HORA SOMADA: "+sdf.format(gc.getTime()));
    System.out.println("HORA SOMADA: "+sdf2.format(gc.getTime()));
    
}

}

estava relendo este tópico e também achei esta forma mais prática, mais fácil, mais sucinta e eficaz.

date = new Date(); // sei lá, você conseguiu a data de alguma forma date = new Date(date.getTime() + 30 * 60 * 1000); // soma 30 minutos

estou montando um despertador em java, para quando o usuário for cozinhar (por exemplo), poder usar no computador um despertador prático.
se houver interesse, avisem…

ó

[quote=ViniGodoy]Se você precisa trabalhar com horas (somar, estipular períodos, etc), o ideal é não usar a API do Java, que é péssima.

Melhor mesmo é usar a Joda Time:
http://joda-time.sourceforge.net/

Que está até sendo adaptada para fazer parte da API nas próximas versões. Facilita MUITO o trabalho.[/quote]

Uma vez vi o uso desta classe em um projeto mas não dei muita importância.
Mas como você disse ser melhor usar ela, já salvei uns links aqui do Joda.org e baixei a biblioteca
para testar mais tarde.

Abraço.