Ajuda com hora

10 respostas
R

Tem alguma forma de pegar a hora desse site: http://www.horariodebrasilia.org Com o JAVA?

10 Respostas

aix

tem sim amigo segue:

package httpsslconnection;

import java.net.MalformedURLException;
import java.net.URL;
import java.io.*;
import java.net.HttpURLConnection;

/**
 * Classe que faz conexão em URL's HTTP.
 *
 * @author Dilnei Cunha.
 */
public class HttpConnection {

    /**
     * Método principal que executa a aplicação.
     *
     * @param args
     */
    public static void main(String[] args) {
        new HttpConnection().conectaHttp();
    }

    /**
     * Método responsavel por abrir a conexão a uma URL HTTP e obter um
     * inputstream dos dados de retorno.
     */
    private void conectaHttp() {

        String urlHttps = "http://www.horariodebrasilia.org/";
        URL url;
        try {

            url = new URL(urlHttps);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();

            buscaConteudoDaPagina(con);

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    /**
     * Método que imprime o conteúdo no console.
     *
     * @param httpURLConnection
     */
    private void buscaConteudoDaPagina(HttpURLConnection httpURLConnection) {
        if (httpURLConnection != null) {

            try {

                System.out.println("****** Conteúdo da URL HTTP ********");
                BufferedReader br = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));

                StringBuilder builder = new StringBuilder();
                String input;

                while ((input = br.readLine()) != null) {
                    builder.append(input);
                }
                br.close();

                String conteudo = builder.toString();

                int posicaoInicial = conteudo.indexOf("<p id='relogio'>") + 16;
                int posicaoFinal = conteudo.indexOf("</p>");
                String hora = conteudo.substring(posicaoInicial, posicaoFinal);
                System.out.println("A hora do site é: " + hora);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
painhoo2

Ops Desculpa dupliquei sem querer.
Abaixo o post original

painhoo2

esse horario é o horario brasileiro de brasilia.
você usar o date
pegar horas minutos e segundos e dia_da_semana
e usar um swith neles para mostrar do jeito que ta lá!
com SimpleDateFormat, fica simples.

procura por SimpleDateFormat
import java.util.Date;
import java.text.SimpleDateFormat;

public class data
{
    String mes, dia, ano, dia_semana, hora;
    SimpleDateFormat horaformatada = new SimpleDateFormat("HH:mm:ss");
    
    public void le_hora()
    { 
        Date horaAtual = new Date();
        hora = horaformatada.format(horaAtual);
    }        
    
    public void le_data()
    { 
        Date data = new Date();
        dia = ""+data.getDate();
        ano = ""+(1900 + data.getYear());
        
        switch(data.getMonth())
        { 
            case 0: mes = "Janeiro";break;
            case 1: mes = "Fevereiro";break;
            case 2: mes = "Março";break;
            case 3: mes = "Abril";break;
            case 4: mes = "Maio";break;
            case 5: mes = "Junho";break;
            case 6: mes = "Julho";break;
            case 7: mes = "Agosto";break;
            case 8: mes = "Setembro";break;
            case 9: mes = "Outubro";break;
            case 10: mes = "Novembro";break;
            case 11: mes = "Dezembro";break; 
        }    
        switch(data.getDay())
        { 
            case 0: dia_semana = "Domingo";break;
            case 1: dia_semana = "Segunda-Feira";break;
            case 2: dia_semana = "Terça-Feira";break;
            case 3: dia_semana = "Quarta-Feira";break;
            case 4: dia_semana = "Quinta-Feira";break;
            case 5: dia_semana = "Sexta-Feira";break;
            case 6: dia_semana = "Sábado";break;    
        }
    }       
}

Com essa classe acima a hora será mostrada assim:
Segunda-Feira, 20 de Maio de 2013 12:32:45

Qualquer duvida é só postar!

B

Se for para pegar o horário certo, eu recomendo usar próprio Network Time Protocol, que é o padrão mundial para sincronizar data e hora.

Duas formas de fazer isso:

  • Ligar a atualização automática de horário no teu computador. Depois executar um new Date() em cima disso.
  • Usar um cliente Java de NTP.

Edit:

painhoo2, todo esse código que você fez dá pra fazer só com o SimpleDateFormat. Ele não serve só para formatar hora, ele também escreve datas e dias da semana por extenso. Veja o Javadoc dele.

painhoo2

Bruno Laturner:
Se for para pegar o horário certo, eu recomendo usar próprio Network Time Protocol, que é o padrão mundial para sincronizar data e hora.

Duas formas de fazer isso:

  • Ligar a atualização automática de horário no teu computador. Depois executar um new Date() em cima disso.
  • Usar um cliente Java de NTP.

Edit:

painhoo2, todo esse código que você fez dá pra fazer só com o SimpleDateFormat. Ele não serve só para formatar hora, ele também escreve datas e dias da semana por extenso. Veja o Javadoc dele.

Hehehe, Desculpa se não é o metodo mais certo para se fazer isso, mais essa foi a gambiarra achada para eu conseguir fazer isso em java!
Ainda estou meio que Ingatinhando em java!

Se você soubesse o quanto eu pesquisei e lutei para conseguir isso ai, foi uma verdadeira briga!

R

Obrigado painhoo2 e Bruno Laturner! Mas eu preciso de uma hora que não seja a do próprio computador.

R
aix:
tem sim amigo segue:
package httpsslconnection;

import java.net.MalformedURLException;
import java.net.URL;
import java.io.*;
import java.net.HttpURLConnection;

/**
 * Classe que faz conexão em URL's HTTP.
 *
 * @author Dilnei Cunha.
 */
public class HttpConnection {

    /**
     * Método principal que executa a aplicação.
     *
     * @param args
     */
    public static void main(String[] args) {
        new HttpConnection().conectaHttp();
    }

    /**
     * Método responsavel por abrir a conexão a uma URL HTTP e obter um
     * inputstream dos dados de retorno.
     */
    private void conectaHttp() {

        String urlHttps = "http://www.horariodebrasilia.org/";
        URL url;
        try {

            url = new URL(urlHttps);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();

            buscaConteudoDaPagina(con);

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    /**
     * Método que imprime o conteúdo no console.
     *
     * @param httpURLConnection
     */
    private void buscaConteudoDaPagina(HttpURLConnection httpURLConnection) {
        if (httpURLConnection != null) {

            try {

                System.out.println("****** Conteúdo da URL HTTP ********");
                BufferedReader br = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));

                StringBuilder builder = new StringBuilder();
                String input;

                while ((input = br.readLine()) != null) {
                    builder.append(input);
                }
                br.close();

                String conteudo = builder.toString();

                int posicaoInicial = conteudo.indexOf("<p id='relogio'>") + 16;
                int posicaoFinal = conteudo.indexOf("</p>");
                String hora = conteudo.substring(posicaoInicial, posicaoFinal);
                System.out.println("A hora do site é: " + hora);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

Funcionou, mas ele sempre pega o mesmo horário:

****** Conteúdo da URL HTTP ********
A hora do site é: 05:43:40

Tentei descobrir o por quê mas não consegui!

B

Dê uma olhada no link que postei, na parte de Attachments.

painhoo2

rodazzz:
aix:
tem sim amigo segue:

Funcionou, mas ele sempre pega o mesmo horário:

****** Conteúdo da URL HTTP ********
A hora do site é: 05:43:40

Tentei descobrir o por quê mas não consegui!

Você quer que a hora fique atualizando é isso?
EX: 05:43:40,05:43:41,05:43:42,05:43:43 e etc…
se for isso você pode usar o timerbean.jar
procura no google que você encontra ele.
espero ter ajudado.

R

painhoo2:
rodazzz:
aix:
tem sim amigo segue:

Funcionou, mas ele sempre pega o mesmo horário:

****** Conteúdo da URL HTTP ********
A hora do site é: 05:43:40

Tentei descobrir o por quê mas não consegui!

Você quer que a hora fique atualizando é isso?
EX: 05:43:40,05:43:41,05:43:42,05:43:43 e etc…
se for isso você pode usar o timerbean.jar
procura no google que você encontra ele.
espero ter ajudado.

Na verdade atualizar não é o problema. O problema mesmo é que quando puxa a hora do site, ela sempre vem como 05:43:40. Até agora não consegui entender o por quê disso.

Criado 19 de maio de 2013
Ultima resposta 20 de mai. de 2013
Respostas 10
Participantes 4