Galera, boa Tarde
Gostaria de saber como que eu faço para que ao passar do dia 31/02/2017 ele irá pata o dia 01/02/2017 e assim por diante, estou com uma logica montada aqui num método static mas não estou obtendo sucesso nisso, sera que alguem pode me ajudar?
Segue as telas com os códigos,
método static
Obg
Dragoon
Janeiro 16, 2017, 4:03pm
#2
Copie o código e disponibilize na sua pergunta!
Segue o código
public static List teste(Date dataInicial, Integer periodo, Integer cargaHorariaTotal, Integer cargaHorariaDia) throws ParseException {
List<PeriodoGrade> listaPeriodoGrade = new ArrayList<PeriodoGrade>();
SimpleDateFormat simpleDateFormatSemHora = new SimpleDateFormat("dd/mm/yyyy");
SimpleDateFormat simpleDateFormatComHora = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Calendar calendar = Calendar.getInstance();
Integer diaSoma = 0;
for (; cargaHorariaTotal > 0 ;) {
calendar.setTime(dataInicial);
calendar.add(Calendar.DATE, diaSoma); // TODO ACERTAR MES
// - eu criei uma data base para calcular as outras datas, ela nao
// tem a hora
String dataBase = simpleDateFormatSemHora.format(calendar.getTime());
// - calcular a data inicial contenando com hora, usando a data base
String horarioManha = "08";
String horarioTarde = "14";
String horarioNoite = "18";
String horarioInicial = new String();
if (periodo == 0) {
horarioInicial = horarioManha;
} else if (periodo == 1) {
horarioInicial = horarioTarde;
} else if (periodo == 2) {
horarioInicial = horarioNoite;
}
String dataInicialString = dataBase + " " + horarioInicial + ":00:00";
Date dataInicialCalculada = simpleDateFormatComHora.parse(dataInicialString);
// - calcular a data final contenando com hora, usando a data base
Integer horaFinal = 0;
if (cargaHorariaTotal < cargaHorariaDia) {
horaFinal = Integer.parseInt(horarioInicial) + cargaHorariaTotal;
} else {
horaFinal = Integer.parseInt(horarioInicial) + cargaHorariaDia;
}
String dataFinalString = dataBase + " " + horaFinal + ":00:00";
Date dataFinalCalculada = simpleDateFormatComHora.parse(dataFinalString);
// - setando os valores
PeriodoGrade periodoGrade = new PeriodoGrade();
periodoGrade.setDataInicial(dataInicialCalculada);
periodoGrade.setDataFinal(dataFinalCalculada);
listaPeriodoGrade.add(periodoGrade);
cargaHorariaTotal -= cargaHorariaDia;
diaSoma++;
}
return listaPeriodoGrade;
}
}
List<PeriodoGrade> listaPeriodoGrade = new ArrayList<PeriodoGrade>();
SimpleDateFormat simpleDateFormatSemHora = new SimpleDateFormat("dd/mm/yyyy");
SimpleDateFormat simpleDateFormatComHora = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Calendar calendar = Calendar.getInstance();
Integer diaSoma = 0;
for (; cargaHorarioTotal > 0 😉 {
calendar.setTime(dataInicial);
calendar.add(Calendar.DATE, diaSoma); //TODO ACERTAR MES
calendar.add(Calendar.DATE, +1);
// - eu criei uma data base para calcular as outras datas, ela nao tem a hora
String dataBase = simpleDateFormatSemHora.format(calendar.getTime());
// - calcular a data inicial contenando com hora, usando a data base
String horarioManha = "08";
String horarioTarde = "14";
String horarioNoite = "18";
String horarioInicial = new String();
if (periodo == 1) {
horarioInicial = horarioManha;
} else if (periodo == 2) {
horarioInicial = horarioTarde;
} else if (periodo == 3) {
horarioInicial = horarioNoite;
}
String dataInicialString = dataBase + " " + horarioInicial + ":00:00";
Date dataInicialCalculada = simpleDateFormatComHora.parse(dataInicialString);
// - calcular a data final contenando com hora, usando a data base
Integer horaFinal = 0;
if (cargaHorarioTotal < cargaHorarioDia) {
horaFinal = Integer.parseInt(horarioInicial) + cargaHorarioTotal;
} else {
horaFinal = Integer.parseInt(horarioInicial) + cargaHorarioDia;
}
String dataFinalString = dataBase + " " + horaFinal + ":00:00";
Date dataFinalCalculada = simpleDateFormatComHora.parse(dataFinalString);
// - setando os valores
PeriodoGrade periodoGrade = new PeriodoGrade();
periodoGrade.setDataInicial(dataInicialCalculada);
periodoGrade.setDataFinal(dataFinalCalculada);
listaPeriodoGrade.add(periodoGrade);
cargaHorarioTotal -= cargaHorarioDia;
diaSoma++;
}
return listaPeriodoGrade;
}
o Códio é esse
@Viniciuspascucci , eu tenho exatamente esse código, o que vc quer é tipo 2017-01-10 + 3 dias = 2017-01-13 ?
Se sim, te quando hoje a noite, pois não estou com ele aqui.
Sim man,é isso mesmo, pode me ajudar?
// Usuário informa uma data
Date dataDoUsuario = new Date();
// Através do Calendar, trabalhamos a data informada e adicionamos 1 dia nela
Calendar c = Calendar.getInstance();
c.setTime(dataDoUsuario);
c.add(Calendar.DATE, +1);
// Obtemos a data alterada
dataDoUsuario = c.getTime();
@Viniciuspascucci , O método está pronto pra usar, é só colar aí.
public String SetData(String data, int dias) {
String DataAlterada = "";
String FormatoDaData = "dd/MM/yyyy";
try {
SimpleDateFormat format = new SimpleDateFormat(FormatoDaData);
java.sql.Date Data = new java.sql.Date(format.parse(data).getTime());
Calendar ob = Calendar.getInstance();
ob.setTime(Data);
ob.add(Calendar.DATE, +dias);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(FormatoDaData);
DataAlterada = simpleDateFormat.format(ob.getTime());
} catch (Exception e) {
return "Data Inválida";//caso passe a data fora do formato
}
return DataAlterada;
}
Como usar:
String DataTeste = SetData(“12/03/2017” , 3);
15/03/2017
String DataTeste = SetData(“12/03/2017” , -3);
09/03/2017
3 = aumenta 3 dias
-3 = diminue 3 dias
Você parece estar usando Java 8
, que tem várias melhorias para manipular datas. Por exemplo:
LocalDate amanha = LocalDate.now().plusDays(1);
LocalDateTime daquiAPouco = LocalDateTime.now().plus(5, ChronoUnit.MINUTES);
LocalDateTime amanhaComHorario = amanha.atTime(11, 00);
Obrigado cara, ajudou abstante
vlw Abraços
Ahh beleza cara, vou usar aqui
Valeu