Sobre:
Mais sobre Java por favor acesse: https://pt.wikipedia.org/wiki/Java_(linguagem_de_programa%C3%A7%C3%A3o).
Detalhes:
Um código pronto para quem esta precisando definir períodos entre data inicial e data final em Java com um dia de corte.
Código:
Veja o exemplo abaixo.
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package app.console.datas; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * * @author paulo.uechi */ public class AppConsoleDatas { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here // Detalhe: o formato abaixo representa yyyy,MM,dd // Importante: o mes comeca a partir de 0 = janeiro Calendar objTst = GregorianCalendar.getInstance(); int intDiaCorte = 1; for (int intCnt = 0; intCnt < 12; intCnt++){ objTst.set(2015, intCnt, 1); Date objDat = objTst.getTime(); System.out.println(intCnt + " INI - " + retornaDatas(10, retornaDia(1, intDiaCorte, objDat))); System.out.println(intCnt + " FIM - " + retornaDatas(10, retornaDia(2, intDiaCorte, objDat))); System.out.println(""); } } public static Date retornaDia(int intOpt, int intDia, Date objDat) { Date objDtt = null; try { int intUltDia; int intRetDia; int intRetMes; int intRetAno; if (intOpt == 1) { Calendar objCal = GregorianCalendar.getInstance(); if (objDat != null){ objCal.setTime(objDat); } else { objCal.setTime(new Date()); } objDtt = objCal.getTime(); intUltDia = objCal.getActualMaximum(Calendar.DAY_OF_MONTH); if (intDia > intUltDia){ intRetDia = intUltDia; } else { intRetDia = intDia; } intRetMes = (objCal.get(Calendar.MONTH)) + 1; // Corrige mês 0 intRetAno = objCal.get(Calendar.YEAR); objDtt = (new SimpleDateFormat("dd/MM/yyyy")).parse(intRetDia + "/" + intRetMes + "/" + intRetAno); } else if (intOpt == 2) { Calendar objCal = GregorianCalendar.getInstance(); if (objDat != null){ objCal.setTime(objDat); } else { objCal.setTime(new Date()); } objCal.add(Calendar.MONTH, +1); // Adiciona +1 mês objDtt = objCal.getTime(); intUltDia = objCal.getActualMaximum(Calendar.DAY_OF_MONTH); if (intDia > intUltDia){ intRetDia = intUltDia; } else { intRetDia = intDia; } intRetMes = (objCal.get(Calendar.MONTH)) + 1; // Corrige mês 0 intRetAno = objCal.get(Calendar.YEAR); objDtt = (new SimpleDateFormat("dd/MM/yyyy")).parse(intRetDia + "/" + intRetMes + "/" + intRetAno); Calendar objClc = GregorianCalendar.getInstance(); objClc.setTime(objDtt); // Tratamento Tira -1 dia objClc.add(Calendar.DAY_OF_YEAR, -1); objDtt = objClc.getTime(); } } catch (Exception e) { objDtt = null; } return objDtt; } public static String retornaDatas(int intOptFmt, Date datObject) { String strRet; try { String strFmt; if (intOptFmt == 1) { strFmt = "yyyy-MM-dd HH:mm:ss"; } else if (intOptFmt == 2) { strFmt = "yyyy/MM/dd HH:mm:ss"; } else if (intOptFmt == 3) { strFmt = "yyyy/mm/dd HH:mm:ss"; } else if (intOptFmt == 4) { strFmt = "yyyy/mm/dd"; } else if (intOptFmt == 5) { strFmt = "yyyy/MM/dd"; } else if (intOptFmt == 6) { strFmt = "dd-MM-yyyy HH:mm:ss"; } else if (intOptFmt == 7) { strFmt = "dd/MM/yyyy HH:mm:ss"; } else if (intOptFmt == 8) { strFmt = "dd/mm/yyyy HH:mm:ss"; } else if (intOptFmt == 9) { strFmt = "dd/mm/yyyy"; } else if (intOptFmt == 10) { strFmt = "dd/MM/yyyy"; } else { strFmt = "yyyy-MM-dd HH:mm:ss"; } SimpleDateFormat objFmt; strRet = (new SimpleDateFormat(strFmt).format(datObject)); } catch (Exception e) { strRet = null; } return strRet; } }
Retorno:
Abaixo veja o retorno do código acima:
debug: 0 INI - 01/01/2015 0 FIM - 31/01/2015 1 INI - 01/02/2015 1 FIM - 28/02/2015 2 INI - 01/03/2015 2 FIM - 31/03/2015 3 INI - 01/04/2015 3 FIM - 30/04/2015 4 INI - 01/05/2015 4 FIM - 31/05/2015 5 INI - 01/06/2015 5 FIM - 30/06/2015 6 INI - 01/07/2015 6 FIM - 31/07/2015 7 INI - 01/08/2015 7 FIM - 31/08/2015 8 INI - 01/09/2015 8 FIM - 30/09/2015 9 INI - 01/10/2015 9 FIM - 31/10/2015 10 INI - 01/11/2015 10 FIM - 30/11/2015 11 INI - 01/12/2015 11 FIM - 31/12/2015 CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos)
Conclusão:
Este exemplo geralmente é utilizando em processos financeiros de faturamento onde por exemplo precisamos definir que o cliente “X” tem as suas faturados cobradas todo o dia “01” de cada mês.
Observações:
Lembrar que este código já esta pronto para tratar os meses que não tenham 31 dias completos no calendário.
Espero ter ajudado!
🙂