Tenho intervalos de horas e quero juntar se possivel.
Exemplo:
Intervalos iniciais: “12:45 a 14:55”,“15:55 a 18:25”,“22:30 a 00:15”, “05:30 a 07:30”.
Vou adicionar um intervalo: “13:15 a 16:55”.
Intervalos finais: “12:45 a 18:25”,“22:30 a 00:15”, “05:30 a 07:30”
Tambem preciso remover, quebrando se necessario
exemplo:
Intervalos iniciais: “12:45 a 18:25”,“22:30 a 00:15”, “05:30 a 07:30”
Vou remover um intervalo: “13:15 a 16:55”.
Intervalos finais: “12:45 a 13:15”,“16:55 a 18:25”,“22:30 a 00:15”, “05:30 a 07:30”.
e verificar se tao intervalo esta na lista
exemplo:
Intervalos iniciais: “12:45 a 18:25”,“22:30 a 00:15”, “05:30 a 07:30”
Vou verificar um intervalo: “13:15 a 16:55”.
return true
desculpa, mas minha bola de cristal quebrou.
ou vc explica melhor ou muitas pessoas não entenderão seu problema
Você precisa basicamente:
- Um objeto intervalo, que tenham uma hora de inicio e uma hora de fim:
- Método para remorer intervalo
- Método para verificar se intervalo recebido está contido no intervalo atual
- Uma lista de intervalos
Para abstrair as horas vc pode utilizar o objeto java.util.Calendar. Ou seja você vai ter uma lista de objetos Intervalo e cada objeto Intervalo terá dois objetos Calendar e os métodos necessários.
[quote=rafaelviny]desculpa, mas minha bola de cristal quebrou.
ou vc explica melhor ou muitas pessoas não entenderão seu problema[/quote]
Um exemplo melhor:
Vc trabalha numa empresa cuja a carga seja de 8h por dia
Vc pode escolher os horarios de entrada e saida
por exemplo vvc escolheu das 7:00 as 15:00h.
Mas ai vc decobriu q podia inserir um horario para cafezinho
entao removeu 8:30 as 8:45
ai ficou 7:00 as 8:30 e das 8:45 as 15:00
percebeu q ai n cumpre a carga horaria entao teve q adicionar da 15:00 as 15:15
ai ficou 7:00 as 8:30 e das 8:45 as 15:15
vc axou muito ruim esse horario e decidiu q das 12:15 as 18:00 n poderia trabalhar
ai ficou das 7:00 as 8:30 e 8:45 a 12:15
bom ai n cumpre o horario resolveu adicionar das 18:00 as 21:00h
ai ficou 7:00 as 8:30, 8:45 a 12:15, 18:00 as 21:00
e assim por diante
melhorou?
[quote=francislon]Você precisa basicamente:
- Um objeto intervalo, que tenham uma hora de inicio e uma hora de fim:
- Método para remorer intervalo
- Método para verificar se intervalo recebido está contido no intervalo atual
- Uma lista de intervalos
Para abstrair as horas vc pode utilizar o objeto java.util.Calendar. Ou seja você vai ter uma lista de objetos Intervalo e cada objeto Intervalo terá dois objetos Calendar e os métodos necessários.[/quote]
A classe calendar é uma classe abstrata ou interface que utiliza dia, mes e ano, na minha aplicaçao so tem horas, poderia me explicar como poderia utilizar para adicionar, remover e verificar na lista?
o objeto intervalo ja tinha feito
uma lista de intervalos tambem, é aki q estou com problemas, COMO adicionar, remover e verificar
[quote]ChronosSage wrote:
A classe calendar é uma classe abstrata ou interface que utiliza dia, mes e ano[/quote]
Dê uma lida na especificação da classe Calendar, ela trabalha com horas sim: http://download.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html
Você pode estar trabalhando com GregorianCalendar: http://download.oracle.com/javase/1.4.2/docs/api/java/util/GregorianCalendar.html
Em relação à lista você pode estar trabalhando com alguma implementação da interface java.util.List: http://download.oracle.com/javase/1.4.2/docs/api/java/util/List.html
A interface List provê métodos para manipular sua lista.
[quote=francislon][quote]ChronosSage wrote:
A classe calendar é uma classe abstrata ou interface que utiliza dia, mes e ano[/quote]
Dê uma lida na especificação da classe Calendar, ela trabalha com horas sim: http://download.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html
Você pode estar trabalhando com GregorianCalendar: http://download.oracle.com/javase/1.4.2/docs/api/java/util/GregorianCalendar.html
Em relação à lista você pode estar trabalhando com alguma implementação da interface java.util.List: http://download.oracle.com/javase/1.4.2/docs/api/java/util/List.html
A interface List provê métodos para manipular sua lista.
[/quote]
Ja conheço essas classes, para eu fazer isso seria necessario seta um dia e hora para cada intervalo, mas ai tem o problema de começar em um dia e terminar no outro, exemplo das 21:00 as 05:00h e adicionar das 01:00 as 07:00, o calendar n poderia judar nesse caso pois n ha dia de referencia, o resultado teria q ser 21:00 as 07:00, portanto a adicao teria q ser a mao
Consegui resolver o problema mas n é o ideal
O intevalo é convertido em minutos
na lista criei um array de boolean com tamanho 1440(qtd de minutos em um dia)
para adicionar so setar true nas posiçoe e remover setar false
depois converter o array para horas(String) novamente para exibiçao
VLW pela ajuda
Use o Joda-Time: http://joda-time.sourceforge.net/
Em especial a classe Period.
[quote=ViniGodoy]Use o Joda-Time: http://joda-time.sourceforge.net/
Em especial a classe Period.[/quote]
Isso n ajudou, pois a classe Period guarda um certo tempo de duraçao, entao eu teria q usar uma classe como a classe Instant, mas a classe Instant usa dias meses e ano, alem disso n permite que eu remova um periodo dentro de outro periodo, se eu somar Periods, soma igual na matematica(02:00 + 03:00 = 05:00)
e oq eu quero é:
“00:00 a 02:00” + “00:00 a 03:00” = “00:00 a 03:00”
“00:00 a 02:00” + “03:00 a 05:00” = “00:00 a 02:00” ou “03:00 a 05:00”
“03:00 a 07:00” - “04:00 a 05:00” = “03:00 a 04:00” ou “05:00 a 07:00”
Note que se eu passar para o meu sistema “01:30”, n importa o dia, é sempre “01:30”, como uma fila circular de 00:00 a 23:59 horas
Se o Joda-Time pode resolver o meu problema, poderia me dizer como? Pois n encontrei
meu maior problema é quando passa de meia noite, ou seja posso remover das “23:50 as 04:50” ou adicionar “22:00 as 01:00” e o sistema tem q considerar q “nao passou o dia”, ou seja os horarios sempre fazem parte do mesmo dia como uma fila circular