-
Notifications
You must be signed in to change notification settings - Fork 1
Auxiliares
EduardoProfe edited this page Oct 26, 2023
·
4 revisions
Clase de utilidades que contiene algunos métodos para el trabajo con Date
y con el
carnet de identidad cubano, además de otros.
El acceso a estos métodos es de manera estática. Por ejemplo:
String ci = "05112568423";
Date fechaNacimiento = Auxiliares.convertirFechaNacimientoCiDate(ci);
- Extraer Fecha Nacimiento de un CI en forma de
Date
- Determinar la edad dado un
Date
- Determinar diferencia en años dados 2
Date
- Determinar sexo dado un CI en forma de char
- Determinar sexo dado un CI en forma de String
- Sumar años al
Date
dado - Determinar la cantidad de caracteres de un entero
- Introducir elementos en una lista de forma ordenada
-
Arquetipo:
convertirFechaNacimientoCiDate(String)
-
Parámetros:
String
carnet de identidad cubano - Descripción: Método para extraer la fecha de nacimiento del carnet de identidad suministrado.
-
Particularidades: Si el
String
pasado es null lanza unIllegalArgumentException
. El carnet debe estar en el formato válido para el correcto funcionamiento de este método. -
Ejemplo de uso:
String ci = "05112568423"; Date fechaNacimiento = Auxiliares.convertirFechaNacimientoCiDate(ci);
-
Arquetipo:
determinarEdad(Date)
-
Parámetros:
Date
fecha de nacimiento - Descripción: Método para determinar la edad actual de la persona en dependencia de su fecha de nacimiento.
-
Particularidades: Si la fecha pasada es null o es póstuma al día actual lanza un
IllegalArgumentException
-
Ejemplo de uso:
Date d = new Date(2020,5,3); int edad = Auxiliares.determinarEdad(d);
-
Arquetipo:
determinarDiferenciaAnyos(Date, Date)
-
Parámetros: 2
Date
fecha inicial y fecha final. - Descripción: Método para determinar la diferencia en años entre dos fechas.
-
Particularidades: Si la fecha inicial es póstuma a la fecha final, o cualquiera de ambas fecha es
null
lanza unIllegalArgumentException
-
Ejemplo de uso:
Date d1 = new Date(2020,9,23); Date d2 = new Date(2022,3,4); int dif = Auxiliares.determinarDiferenciaAnyos(d1,d2);
-
Arquetipo:
determinarSexo(String)
-
Parámetros:
String
carnet de identidad cubano. -
Descripción: Método para determinar el sexo de la persona en dependencia de su carnet de identidad.
Devuelve un
char
referente al sexo ('F'->Femenino, 'M'->Masculino). -
Particularidades: El carnet de identidad debe ser válido para que el algoritmo funcione.
Si el carnet de identidad pasado es
null
o no tiene longitud 11, se lanza unIllegalArgumentException
. -
Ejemplo de uso:
String ci = "05112568423"; char sexoChar = Auxiliares.determinarSexo(ci);
-
Arquetipo:
determinarSexoString(String)
-
Parámetros:
String
carnet de identidad cubano. -
Descripción: Método para determinar el sexo de la persona en dependencia de su carnet de identidad.
Devuelve
String
referente al sexo ("Femenino", "Masculino"). -
Particularidades: El carnet de identidad debe ser válido para que el algoritmo funcione.
Si el carnet de identidad pasado es
null
o no tiene longitud 11, se lanza unIllegalArgumentException
. -
Ejemplo de uso:
-
Arquetipo:
sumarAnyosFecha(Date, int)
-
Parámetros:
Date
fecha,int
cantidad de años a sumar - Descripción: Método para sumar (o restar) años a una fecha dada.
-
Particularidades: Permite incrementar o decrementar una fecha en años, en dependencia del signo del entero pasado.
Si la fecha es
null
se lanza unIllegalArgumentException
. -
Ejemplo de uso:
Date d = new Date(2023,4,4); Date dMod = Auxiliares.sumarAnyosFecha(d,2);
-
Arquetipo:
cantidadCaracteresEntero(int)
-
Parámetros:
int
Entero -
Descripción: Método para determinar la cantidad de caracteres que determinaría un
entero en caso de ser
String
. -
Ejemplo de uso:
int cantCaracteres = Auxiliares.cantidadCaracteresEntero(3928);
-
Arquetipo:
introducirElementoListadoOrdenado(List, Comparable...)
- Parámetros: Lista principal de elementos, Elementos a introducir
- Descripción: Método para introducir de forma ordenada un elemento (o varios) en una lista. Puede ser empleado para ordenar en una lista una serie de elementos, aunque no es recomendable su uso por la complejidad que podría alcanzar el algoritmo, en caso de que sean numerosos elementos.
-
Particularidades: Emplea una inserción lineal por lo que se puede complicar con demasiados elementos.
La lista debe estar previamente ordenada.
Si alguno de los parámetros pasados es
null
se lanza unIllegalArgumentException
-
Ejemplo de uso:
List<Integer> lista = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7)); System.out.println("Lista antes de insertar elementos: "+lista); Auxiliares.introducirElementoListadoOrdenado(lista,33,12,36,875,3422,467587,231); System.out.println("Lista después de insertar elementos: "+ lista);
public final class Auxiliares {
private Auxiliares(){}
public static Date convertirFechaNacimientoCiDate(String ci) {
if(ci==null){
throw new IllegalArgumentException();
}
int siglo = 0;
Date fechaNacimiento = null;
int digitoMilenio = Byte.valueOf(""+ci.charAt(6));
if(digitoMilenio<=5)
siglo=20;
else if(digitoMilenio<=8)
siglo=21;
else
siglo=19;
String anyo = (siglo-1)+ci.substring(0, 2);
String mes = ci.substring(2,4);
String dia = ci.substring(4,6);
Calendar c = new GregorianCalendar(Integer.valueOf(anyo),Integer.valueOf(mes)-1, Integer.valueOf(dia));
fechaNacimiento = c.getTime();
return fechaNacimiento;
}
public static int determinarEdad(Date fechaNacimientoCi) {
if(fechaNacimientoCi==null || fechaNacimientoCi.after(new Date()))
throw new IllegalArgumentException();
return determinarDiferenciaAnyos(fechaNacimientoCi, new Date());
}
public static int determinarDiferenciaAnyos(Date fechaInicial, Date fechaFinal) {
if(fechaInicial==null || fechaFinal==null || fechaInicial.after(fechaFinal))
throw new IllegalArgumentException();
int difAnyos=0;
Calendar fechaInic = new GregorianCalendar();
fechaInic.setTime(fechaInicial);
Calendar fechaFin = new GregorianCalendar();
fechaFin.setTime(fechaFinal);
difAnyos = fechaFin.get(Calendar.YEAR) - fechaInic.get(Calendar.YEAR);
int difMeses = fechaFin.get(Calendar.MONTH) - fechaInic.get(Calendar.MONTH);
int difDias = fechaFin.get(Calendar.DAY_OF_MONTH) - fechaInic.get(Calendar.DAY_OF_MONTH);
if(difMeses<0 || (difMeses==0 && difDias<0))
difAnyos--;
return difAnyos;
}
public static char determinarSexo(String ci) {
if(ci==null || ci.length()!=11)
throw new IllegalArgumentException();
char sexo = 'F';
int aux = ci.charAt(9);
if(aux%2==0)
sexo = 'M';
return sexo;
}
public static String determinarSexoString(String ci) {
char sexo = determinarSexo(ci);
return sexo == 'F' ? "Femenino" : "Masculino";
}
public static Date sumarAnyosFecha(Date fecha, int cantAnyos) {
if(fecha==null)
throw new IllegalArgumentException();
Calendar fechaCalendar = new GregorianCalendar();
fechaCalendar.setTime(fecha);
fechaCalendar.set(Calendar.YEAR, fechaCalendar.get(Calendar.YEAR)+cantAnyos);
return fechaCalendar.getTime();
}
public static int cantidadCaracteresEntero(int i) {
return String.valueOf(i).length();
}
@SafeVarargs
public static <T extends Comparable<? super T>> void introducirElementoListadoOrdenado(List<T> listado, T...elementos) {
if(elementos==null || listado==null)
throw new IllegalArgumentException();
for(T t: elementos){
if(t==null)
throw new IllegalArgumentException();
}
for(T t : elementos){
boolean aux=true;
for(int i=0;i<listado.size() && aux;i++) {
if(t.compareTo(listado.get(i))<0) {
listado.add(i, t);
aux=false;
}
}
if(aux)
listado.add(t);
}
}
}
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
- Página Principal
- Bibliotecas usadas
- Descarga de la api
- Importación de la api
- Vinculación del
JavaDoc
- Vinculación del
Archivo Source
- Prueba Visual de la api
- Documentación de las clases de la api:
-
Componentes Visuales
AvatarCircular
BotonAnimacion
CampoCIValidado
CarruselImagenes
Imagen
ImagenAnimada
JLabelAnimacion
JLabelHora
JLabelMultilineaMultialineado
JTextFieldModificado
Linea
Notificaciones
NotificacionesModernas
PanelAnimacionCurvas
PanelBordeOval
PanelGradiente
PanelGradienteH
PanelGradienteV
RelojAnalogico
- Utilidades
- Algoritmos
- Modelos
-
Componentes Visuales
Nota: Algunas imágenes tardan un tiempo prolongado en cargarse en dependencia de la velocidad de conexión a Intenet.