Ola amigos Javanaltas do GuJ estou com um problema quero listar horários alternados mas ate fiz um só que ele lista somente desta forma:
Exemplo : Das 7:00 ate 12:00 com intervalo 0 min ele carrega de uma em uma hora:
7:00
8:00
9:00
10:00
11:00
12:00
E se for das 7:00 ate 12:00 com intervalo 30 min ele carrega em meia em meia hora:
7:30
8:30
9:30
10:30
11:30
12:30
Veja o código:
private void btnCarregarActionPerformed(java.awt.event.ActionEvent evt) {
int hmin = (int) spMin.getValue();
int hmax = (int) spMax.getValue();
int hinterv = (int) spInter.getValue();
DefaultTableModel modelo = (DefaultTableModel) tab.getModel();
modelo.setNumRows(0);
for (int hi = hmin; hi <= hmax; hi++) {
for (int mi = hinterv; mi <= hinterv; mi++) {
LocalTime horaAtendimento = LocalTime.of(hi, mi);
modelo.addRow(new Object[]{
horaAtendimento.toString()
});
}
}
}
Solução pretendida carregar lista com horas alternadas por exemplo.
das 7:00 ate 12:00 com intervalo de 30 min de uma forma alternada.
7:00
7:30
8:00
8:30
9:00
9:30
10:00
10:30
11:00
11:30
12:00
Se alguém puder me ajudar eu agradeço!!! Obrigado abraços a todos vocês!!!
Não sei se entendi muito bem, veja se é isso que precisa:
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
LocalTime initialTime = LocalTime.of(7, 0,0);
LocalTime lastTime = LocalTime.of(12, 0,0);
List<LocalTime> time = new ArrayList<>();
time.add(initialTime);
int interval = 30;
LocalTime timeAux = initialTime;
while (timeAux.isBefore(lastTime)){
interval = interval == 0 ? 60 : interval;
timeAux = timeAux.plusMinutes(interval);
time.add(timeAux);
}
time.forEach(System.out::println);
}
}
Ficou Perfeito meu nobre amigo heycristhian !!! Obrigado pela ajuda!!! Abraços.
Olha como Ficou meu Código!!!
private void btnCarregarActionPerformed(java.awt.event.ActionEvent evt) {
LocalTime initialTime = LocalTime.of((int) spMin.getValue(), 0,0);
LocalTime lastTime = LocalTime.of((int) spMax.getValue(), 0,0);
int interval = (int) spInter.getValue();
LocalTime timeAux = initialTime;
DefaultTableModel modelo = (DefaultTableModel) tab.getModel();
modelo.setNumRows(0);
while (timeAux.isBefore(lastTime)){
interval = interval == 0 ? 60 : interval;
timeAux = timeAux.plusMinutes(interval);
modelo.addRow(new Object[]{
timeAux.toString()
});
}
}
Obs: Usei o JSpinner para pegar a hora inicial , hora final e intervalo de minutos.
1 curtida
Boa mano, ficou bem clean. Parabéns
Deu um Problema amigo heycristhian ele não ta começando como por exemplo 8:00 mas sim começa com 8:30!!!
@pellegrini2106 É que no meu exemplo, antes de entrar no while eu adicionei o initialTime na lista. Tente adicionar na sua linha do modelo antes do laço, algo como isso por exemplo:
LocalTime initialTime = LocalTime.of((int) spMin.getValue(), 0,0);
LocalTime lastTime = LocalTime.of((int) spMax.getValue(), 0,0);
int interval = (int) spInter.getValue();
LocalTime timeAux = initialTime;
DefaultTableModel modelo = (DefaultTableModel) tab.getModel();
modelo.setNumRows(0);
modelo.addRow(new Object[]{
initialTime.toString()
});
while (timeAux.isBefore(lastTime)){
interval = interval == 0 ? 60 : interval;
timeAux = timeAux.plusMinutes(interval);
modelo.addRow(new Object[]{
timeAux.toString()
});
}
Valeu meu amigo obrigado novamente pela ajuda!!! abraços!!!