Trabalhando com hora no java

3 respostas
T

Opa…eu to começando agora em java, e surgiu um problema. Seguinte, no exercicio pede pra cria uma classe relogio que pega a hora do sistema e depois uma classe Relogio para cada paise ( 5 paises), eu crie e tal, só que peguei a hora inteira e separada, tipo primeiro hora,minuto e segundos (como INT), fiz sets e gets, tudo certo.Só que eu queria saber o seguinte, quando eu chamo um horario de um pais por exemplo Brasil, ele herda da classe Relogio o horario e adiciona mais fuso do Brasil (exemplo + 5), só que ae que ta o problema, se a hora passa de 24 ela ta adicionando,vai para 29 horas, 30 horas…
eu queria saber como eu faço pra quando ele chegar em 23:59, mudar para 0:00 e ir adicionando …1…2…3 horas???
pra depois fazer com os minutos e segundos tb!

Obrigado desde ja pela ajuda!

:slight_smile:

3 Respostas

Luiz_Aguiar

Procure sobre jodatime, é muito melhor para se lidar com datas e horas.

bruxel

recomento vc dar uma olhada em

import java.text.SimpleDateFormat;
import java.util.Calendar;

segue um exemplo

public static void main( String[] args ) {
    SimpleDateFormat sdf = new SimpleDateFormat( "HH:mm:ss" );
    Calendar cal = Calendar.getInstance();
    
    cal.set(Calendar.HOUR_OF_DAY, 10);
    cal.set(Calendar.MINUTE, 23);
    cal.set(Calendar.SECOND, 15);
    
    // set seta um horario
    // add adiciona hora, minuto ou segundo
    
    java.lang.System.out.println(sdf.format(cal.getTime()));
}
sergiotaborda

twpapum:
Opa…eu to começando agora em java, e surgiu um problema. Seguinte, no exercicio pede pra cria uma classe relogio que pega a hora do sistema e depois uma classe Relogio para cada paise ( 5 paises), eu crie e tal, só que peguei a hora inteira e separada, tipo primeiro hora,minuto e segundos (como INT), fiz sets e gets, tudo certo.Só que eu queria saber o seguinte, quando eu chamo um horario de um pais por exemplo Brasil, ele herda da classe Relogio o horario e adiciona mais fuso do Brasil (exemplo + 5), só que ae que ta o problema, se a hora passa de 24 ela ta adicionando,vai para 29 horas, 30 horas…
eu queria saber como eu faço pra quando ele chegar em 23:59, mudar para 0:00 e ir adicionando …1…2…3 horas???
pra depois fazer com os minutos e segundos tb!

Vc cria o relogio padrão do sistema que retorna o numero de milsegundos reais de uma época.
Depois vc cria um relogio de pais com um campo que é o fuso. é só somar ao milesegundos. Sem problemas.
Depois vc cria um date com isso

interface Relogio {

    public Date now();

}

class RelogioSistema implements Relogio {
 
  public Date now(){
        return new Date(System.currentTimeMillis());
  }
     
}

abstract class RelogioFuso implements Relogio {
  int horasFuso;
   public RelogioFuso (int horasFuso){
     this.horasFuso = horasFuso;
  }
  public Date now(){
        return new Date(System.currentTimeMillis() + horasFuso*60*60*1000);
  }
     
}

class RelogioBrasil extends RelogioFuso {

    public RelogioBrasil (){
     super(5);
  }
}
Criado 29 de abril de 2008
Ultima resposta 29 de abr. de 2008
Respostas 3
Participantes 4