Diferencia de fecha de Java

La mayor parte de la aplicación de Java implica datos en formato de fecha y cálculos relacionados. El cálculo de la diferencia entre dos valores de fecha es una de las operaciones más importantes y frecuentes.

El siguiente código muestra cómo podemos obtener la diferencia entre dos valores de fecha. Comprobaremos si la diferencia de fechas entre las dos fechas proporcionadas es superior a 30 meses.

1. Método getDateDiff: Este método calcula la diferencia entre dos fechas

2. Este método analiza el valor de una fecha dada y obtiene el año, el mes y el día de la fecha. Estas partes de año, mes y día serán usadas por el método getDateDiff mientras se calcula la diferencia.

Método : getDateDiff

[code language=»java»]
public static String getDateDiff(String strStartDate, String strEndDate)
{
int iStartDay, iEndDay, iStartMonth, iEndMonth, iStartYear, iEndYear = 0;
int iStartDate, iEndDate, iDateDiff = 0;
si (strStartDate.trim().equivale a(«») || strEndDate.trim().equivale a(«»))
{
volver («Éxito»);
}
más
{
String strDelim = «/»;
StrTokens StartDate = new StrTokens (strStartDate, strDelim);
StrTokens EndDate = new StrTokens (strEndDate, strDelim);
iStartYear = StartDate.getIYear();
iEndYear = EndDate.getIYear();
iStartMonth = StartDate.getIMonth();
iEndMonth = EndDate.getIMonth();
iStartDay = StartDate.getIDate();
iEndDay = EndDate.getIDate();
iStartYear = iStartYear * 12;
iEndYear = iEndYear * 12;
iStartDate = iStartYear + iStartMonth;
iEndDate = iEndYear + iEndMonth;
iDateDiff = iEndDate – iStartDate;

Si (iDateDiff >= 29) {
Calendario c = nuevo calendario gregoriano;
String firstDate = strStartDate;
String secondDate = strEndDate;
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
Date fdate, sdate, newFDate;
Inténtalo.
fdate = df.parse(firstDate);
sdate = df.parse(segundaFecha);
c.setTime(fdate);
c.add(Calendar.MONTH, 30);
log.debug(«newFDate»+c.getTime());
newFDate = c.getTime();

si («newFDate.after(sdate)||newFDate.equals(sdate)»)
{
log.debug(«newFDate es antes de la fecha»);
log.debug(«La diferencia no es mayor de 30 meses»);
return («Éxito»);
}}catch (ParseException e){
log.debug(«error»+e);
}

log.debug(«La diferencia es de más de 30 meses»);
return («Fail»);
}
más
{
log.debug(«La diferencia no es mayor de 30 meses»);
return («Éxito»);
}

}
}
[/código]

Método/Constructor : StrTokens

[code language=»java»]
importar java.util.StringTokenizer;
importar org.apache.commons.logging.Log;
importar org.apache.commons.logging.LogFactory;

clase pública StrTokens {
int ierto privado;
int iMes privado;
fecha de la inteligencia privada;

/**
* @Return Devuelve la iDate.
*/
public int getIDate() {
Devuelva la fecha;
}
/**
* @param date La iDate a establecer.
*/
public void setIDate(int date) {
iDate = fecha;
}
/**
* @Return Returns the iMonth.
*/
public int getIMonth() {
Regresa el mes pasado;
}
/**
* @param mes El iMes a fijar.
*/
vacío público setIMonth(int mes) {
iMes = mes;
}
/**
* @retorno regresa el iAño.
*/
Public int getIYear() {
Regresa el año pasado;
}
/**
* @param year El iYear a establecer.
*/
vacío público setIYear(int año) {
iAño = año;
}
StrTokens público (String strTxt, String strDelim)
{
String origTxt = new String();
String delimeter = nuevo String();
int longitud = 0;
origTxt = strTxt;
delimitador = strDelim;
int delimLen = delimeter.length();
int startTokInd = 0;
int curDelimIndex = origTxt.indexOf(delimitador);
StringTokenizer str = nuevo StringTokenizer(strTxt,strDelim);
int iCountTokens = str.countTokens();
String[] tokens = nuevo String [iCountTokens];
int i=0;

while (str.hasMoreTokens())
{
tokens[i]=str.nextToken();
i++;
}
this.setIMonth(new Integer(tokens[0]).intValue());
this.setIYear(new Integer(tokens[2])).intValue());
this.setIDate(new Integer(tokens[1]).intValue());
}
}[/código]

El método getDateDiff pasará la fecha de inicio y de fin al constructor StrTokens.
Este constructor analizará la fecha y obtendrá el año, el mes y el día parte de la fecha dada.
El método getDateDiff entonces comprueba si la diferencia de fecha entre la fecha de inicio y la de fin es de más de 30 meses. Este método devolverá entonces un valor de bandera que indica el éxito/fracaso.

Rate this post

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio