Dividir um horário em partes (JodaTime?)

6 respostas
J

Boa noite pessoal,

Preciso pegar uma hora, por exemplo 08:10, e dividi-la em várias partes, por exemplo em dois, virando 04:05. Tentei usar o JodaTime pra isso e nada. Alguém sabe como eu posso fazer isso?

Desde já, valeu pela ajuda.

6 Respostas

D

Não entendi direito, mas não seria algo assim:

Date dataOld = new Date(); Date dataNew = new Date((date.getTime() / 2));

Espero ter ajudado. Até.

J

Olá dmarcosm, infelizmente não deu certo, ele retorna um resultado errado.

Alguém tem mais alguma sugestão?

D
Joao.Gabriel:
Olá dmarcosm, infelizmente não deu certo, ele retorna um resultado errado.

Alguém tem mais alguma sugestão?

Opa....

eu não tinha entendido direito o que você queria, mas acho que este código deve te ajudar. Vê se é isso que você precisa:
public static void main(String []args) {
        //Data usada para desconsiderar a diferença de fusos (GMT)
        Calendar c = new GregorianCalendar(1970, 0, 1, 0, 0, 0);
        //Data que você quer manipular
        Calendar data = new GregorianCalendar(1970, 0, 1, 8, 10, 0);
        //Esta variável armazena o tempo em milessegundos real, desconsiderando o GMT.
        //Será usado para realizar os cálculos
        long dataMillis = data.getTimeInMillis() - c.getTimeInMillis();
        
        //Sempre uso 1 de janeiro de 1970 porque em Java esta é a data inicial. 
        //Quer dizer que, com GMT 0, 1/1/1970 às 0:00:00 o timeMillis é igual a 0.

        //Fazendo as operações matemáticas normalmente, sem esquecer de adicionar a diferença
        //de fuso (GMT) novamente.
        Date dataPorDois = new Date((dataMillis / 2) + c.getTimeInMillis());
        Date dataPorQuatro = new Date((dataMillis / 4) + c.getTimeInMillis());

        //Imprimindo os resultados.
        //Primeiro a data inicial. Depois a data dividido por dois. E por último, a data dividido por quatro.
        System.out.println(data.getTime());
        System.out.println(dataPorDois);
        System.out.println(dataPorQuatro);
    }

Não sei se tem uma maneira mais simples de fazer isso, pois nunca pesquisei sobre o assunto. Porém este código resolve.

Espero ter ajudado. Até.

T

Você quer dividir “8 horas e 12 minutos” por três, por exemplo, e ter o resultado “2 horas e 44 minutos”?

Provavelmente você precisa fazer as contas mesmo:

8 horas + 12 minutos = 8 * 3600 + 12 * 60 = 29520 segundos
29520 segundos / 3 = 9840 segundos
9840 segundos = 2 horas e 44 minutos.

(9840 / 3600 == 2 horas; (9840 % 3600) == 2640 segundos
2640 / 60 = 44 minutos; 2640 % 60 == 0 segundos.)

M

Joao.Gabriel:
Boa noite pessoal,

Preciso pegar uma hora, por exemplo 08:10, e dividi-la em várias partes, por exemplo em dois, virando 04:05. Tentei usar o JodaTime pra isso e nada. Alguém sabe como eu posso fazer isso?

Desde já, valeu pela ajuda.

Você tem que usar Period e suas classes associadas.

D

De tanto falar desse Joda-Time, resolvi pesquisar! rss

http://www.guj.com.br/posts/list/98065.java

Espero que ajude. Até.

Criado 23 de janeiro de 2009
Ultima resposta 26 de jan. de 2009
Respostas 6
Participantes 4