Vous êtes sur la page 1sur 23

REPUBLICA BOLIVARIANA DE VENEZUELA

M. P. P. P. EDUCACIN SUPERIOR
INSTITUTO UNIVERSITARIO POLITECNICO SANTIAGO
MARIO
EXT. BARCELONA
INGENIERIA DE SISTEMAS
Programacin No Numrica I

Facilitador:
Prof. Aquiles

Participantes:
Csar Suniaga 6.950.899
Francisco Villarroel

Barcelona Agosto de 2013

Contenido.

Cadenas y Fechas.

Definicin.
Declaracin.
Comparacin
Copiar
Concatenar
Inicializacin.

Fecha:

Declaracin.
Inicializacin.
Operaciones con fecha.
Formatos de Fecha.
Clase Calendar.

Colocar ejemplos de cada punto

Introduccin.

El lenguaje de programacin Java, originalmente desarrollado por James


Gosling de Sun Microsystems (adquirida por la compaa Oracle) y publicado en
el 1995 como un componente fundamental de la plataforma Java de Sun
Microsystems, deriva mucho en su sintaxis de C y C++ y aunque tiene menos
facilidades de bajo nivel que cualquiera de ellos, sus aplicaciones son
generalmente compiladas a bytecode (clase Java) que puede ejecutarse en
cualquier mquina virtual Java (JVM) sin importar la arquitectura de la
computadora subyacente.
Java es un lenguaje de programacin de propsito general, concurrente, orientado
a objetos y basado en clases que fue diseado especficamente para tener tan
pocas dependencias de implementacin como fuera posible. Su intencin es
permitir que los desarrolladores de aplicaciones escriban el programa una vez y
lo ejecuten en cualquier dispositivo (conocido en ingls como WORA, o "write
once, run anywhere"), lo que quiere decir que el cdigo que es ejecutado en una
plataforma no tiene que ser recompilado para correr en otra. Java es, a partir del
2012, uno de los lenguajes de programacin ms populares en uso,
particularmente para aplicaciones de cliente-servidor de web, con unos 10
millones de usuarios reportados.

Su entorno de ejecucin era relativamente seguro y los principales navegadores


web pronto incorporaron la posibilidad de ejecutar applets Java incrustadas en las
pginas web. Java ha experimentado numerosos cambios desde la versin
primigenia, JDK 1.0, as como un enorme incremento en el nmero de clases y
paquetes que componen la biblioteca estndar. Facilitando los objetivos
planteados para los desarrolladores.

Java es bien conocido por incorporar

programacin orientada a objetos desde el principio. Todo est basado en el


modelo de los objetos. Por tanto, Java tiene un gran nmero de aplicaciones
avanzadas disponibles para usarlas al momento de programar. Una de estas
aplicaciones es la capacidad de relacionar objetos de tipo cadena (string) y fecha
(date), la relacin entre ambas, su formato, manera de inicializarlas, declaracin ,
concatenacin entre otras acciones, propsito especfico de la presente
investigacin. Y que daremos a conocer en las siguientes pginas.

Cadenas.
Definicin:
En programacin,

una cadena

de

caracteres,

palabra,

ristra de

caracteres o frase (string en ingls) es una secuencia ordenada de longitud


arbitraria, aunque finita de elementos que pertenecen a un cierto lenguaje
formal o alfabeto anlogas a una frmula o a una oracin. En general, una cadena
de

caracteres es

una

sucesin

de caracteres (letras, nmeros u

otros signos o smbolos).


En el mbito general de la informtica al considerar las cadenas como un tipo de
datos, hay que definir o conocer cuales son las operaciones que podemos hacer
con ellas, en principio stas podran ser muchas y llegar a ser muy sofisticadas,
por ejemplo:

Asignacin: Consiste en asignarle una cadena a otra.

Concatenacin: Consiste en unir dos cadenas o ms (o una cadena con un carcter)

para formar una cadena de mayor tamao.


Bsqueda: Consiste en localizar dentro de una cadena una subcadena ms pequea o

un carcter.
Extraccin: Se trata de sacar fuera de una cadena una porcin de la misma segn su

posicin dentro de ella.


Comparacin: Se utiliza para comparar dos cadenas.

Sin embargo, cada lenguaje de programacin permite sus propias operaciones de


cadenas al programador; a propsito del objeto del presente estudio veremos
muy especficamente ejemplos y segmentos de cdigo java donde apreciaremos
entre otras: la definicin, declaracin, comparacin, copia, concatenacin e
inicializacin.
Declaracin:
En Java hemos visto que cuando queremos almacenar un valor entero
definimos una variable de tipo int, si queremos almacenar un valor con
decimales definimos una variable de tipo float. Ahora si queremos almacenar
una cadena de caracteres (por ejemplo un nombre de una persona) debemos
definir un objeto de la clase String. Algunas formas son:
.
String minombre; representa una declaracin simple de la variable minombre declarada
como cadena o tipo string..

Otra forma nos sugiere la inclusin de la cadena como argumento en el main y permite
usar internamente otras variables del mismo tipo, como es el caso de la variable titulo
public static void main (String args[]) {
int count;
String titulo;
boolean isAsleep;
...
}

Puede encadenar nombres de variables con el mismo tipo:


int x,y,z;
String firstName, LastName;
Tambin puede dar a cada variable un valor inicial cuando la declare:
int myAge, mySize, numShoes = 28;
String myName = Gina;

En la declaracin de este al igual que otros tipos de variables en Java nos permite
encadenar nombres de variables con el mismo tipo, es decir declarar varias variables del
mismo tipo cadena con una sola instruccin:
String primerNombre, ultimonombre;
Igualmente permite dar a cada variable un valor inicial cuando la declare:
String ciudad = Pto. La Cruz;

Tambien podemos hacer uso en creacin de constructores como por ejemplo:


String str = new String();

-INICIALIZACION:
es el proceso mediante el cual se asigna un valor inicial al string declarado.
Ejemplos:
public String()
Inicializa un nuevo string sin caracteres.
public String(String value) Inicializa un nuevo string con valor dado
por value

Parmetros:

value - un String.
public String(char value[])

Inicializa un nuevo string que representa la secuencia de caracteres


contenida por el arreglo de caracteres de argumento.
Parmetros:

value - el valor inicial del String.


public String(char value[],int offset,int count)

Inicializa un nuevo string que contiene la secuencia de caracteres de un


subarreglo. Este subarreglo se obtiene a partir del arreglo value : parte
desde la posicin offset y es de largo count.
Parmetros:
value - arreglo de caracteres de origen del subarreglo.
offset - la posicin del caracter inicial del subarreglo.
count - el largo del subarreglo.
Indicaciones:
Se produce una excepcin (StringIndexOutOfBoundsException) si
offset indica una posicin no vlida del arreglo value, o count
representa un largo no vlido.
public String(stringBuffer buffer)

Inicializa un nuevo string conteniendo el valor representado por el


stringbuffer.
Parmetros:
buffer - un valor de tipo stringbuffer.

-Concatenacin de cadenas.
Es una ms de las operaciones que podemos realizar a las cadenas en java
Consiste en enlazar, relacionar, pegar, dos o ms cadenas o variables del tipo para formar un
conjunto mayor de caracteres o valores asociados a estas. El proceso de concatenacin lo
podemos observar de dos maneras:

1.

Mediante el uso del Smbolo + por ejemplo

String nombre="Csar ";


String apellido="Suniaga ";
System.out.println(nombre + apellido);
2.

Mediante el mtodo concat

System.out.println(nombre.concat(apellido));
ambos casos daran como resultado lo siguiente:
Csar Suniaga

-Comparacin de cadenas (String)


Otra de las operaciones comunes y seguramente aplicables en el desarrollo de cualquier
proyecto encontramos la comparacin de cadenas, recurso este muy usado en las rutinas
diseadas para agregar informacin ya que permite efectuar inicialmente una bsqueda
del registro a incluirse y de verificarse la no existencia del mismo se procede con la
inclusin del nuevo registro.

En lewnguaje java podemos hacerlo de las siguientes formas:

Comparar con ==
En java se pueden comparar cadenas de texto de varias maneras.
La primera y ms directa, es comparando con el ==. Esta comparacin no compara las
cadenas, sino si la instancia es la misma. As, por ejemplo
String cadena1 = new String("Hola");
String cadena2 = new String("Hola");
if (cadena1 == cadena2)
{
...
}
da false, las cadenas no son iguales, ya que son dos instancias -dos news- distintos.
El compilador de java es listo y si hacemos
String cadena1 = "Hola";
String cadena2 = "Hola";
if (cadena1 == cadena2)
{
...
}
dara true, ya que el compilador ve que tiene dos veces la misma cadena y crea una nica
instancia para ella -slo hace internamente un new-.
Equals()
Es el ms comn y el ms cmodo.
Ejemplo: if (cadena1.equals(cadena2))
Siendo cadena1 y cadena2 dos String se comparan ambas cadenas
CompareTo()
Se utiliza para la ordenacin de cadenas. El mtodo retorna 0 si ambas cadenas tienen el
mismo contenido, negativo si el String es menor que el parmetro que le pasamos y positivo
en el caso de ser mayor.
Ejemplo:
if (cadena1.compareTo(cadena2) == 0)
// cadena1 y cadena2 son iguales
else if (cadena1.compareTo(cadena2) < 0)
//cadena1 va antes que cadena2

else if (cadena1.compareTo(cadena2) > 0)


//cadena2 va despus que cadena1
Esta comparacin es segn la tabla de cdigos Ascii con lo que las maysculas van antes que
las minsculas y las ltimas sern las letras acentuadas.

Entre otras operaciones que permite el uso de cadenas en java podemos resaltar:
-LONGITUD DE UNA CADENA
La longitud de una cadena podemos obtener con el mtodo length() de la siguiente manera
String Palabra3="Midiendo mi longitud";
System.out.println(Palabra3.length());

-Convertir Cadena A Mayscula O Minscula


Si queremos convertir una cadena completa a minsculas hagamos de la siguiente forma
System.out.println(Palabra3.toLowerCase());
Para maysculas sera lo siguiente
System.out.println(Palabra3.toUpperCase());

-CARCTER POR INDICE


Obtengamos el carcter de la posicin 7 considerando que las cadenas empiezan desde la
posicin 0

System.out.println(Palabra3.charAt(7));

-NDICE POR CARCTER


Para saber qu posicin usa una letra podemos usar la siguiente funcin considerando que
retornara la posicin del primer carcter encontrado con el valor que le pasemos
System.out.println(Palabra3.indexOf('e'));
Si pondramos una palabra completa en el valor enviado nos retornara el ndice del primer
carcter de la palabra encontrada, si lo hubiera. Por ejemplo
System.out.println(Palabra3.indexOf("longitud"));
Esto nos retornara 12 ya que en la Palabra3 tenemos la cadena Midiendo mi longitud y la
palabra longitud identifica el inicio del mismo

-SUB CADENAS O SUBSTRING


Aqu veamos la forma de obtener cierta porcin de una cadena, por ejemplo. Si quisiramos la
palabra longitud de la cadena Palabra3 lo obtendramos de la siguiente manera

System.out.println(Palabra3.substring(12, Palabra3.length()));
El primer valor dentro de substring es 12 ya que la palabra longitud empieza en ese punto y
luego se pasa el valor Palabra3.length lo cual retornara la longitud de Palabra3 es decir hasta
el final as obteniendo la porcin que se desea obtener dara el mismo resultado si pondramos
System.out.println(Palabra3.substring(12, 20));

HASTA AQU PRIMERA ENTREGA

JOE DESDE AQU SEGUNDA PARTE


Trabajar con fechas en java no es algo realmente de muchas complicaciones, pero
la cantidad de formas que hay para hacerlo puede confundirnos, o peor an, puede
que slo conozcamos la ms mala para hacerlo. A continuacin presentamos
algunos artculos con los que se pretende explicar un poco acerca de las clases de
las que dispone el lenguaje java para trabajar con fechas, los mtodos ms usados
y algunas sugerencias para realizar un trabajo adecuado que facilite el
mantenimiento de ciertas aplicaciones.
Sobre la clase Date recae todo el trabajo con fechas en Javascript, como obtener una fecha,
el da la hora actuales y otras cosas. Para trabajar con fechas necesitamos instanciar un
objeto de la clase Date y con l ya podemos realizar las operaciones que necesitemos.

Las clases java.util.Date y java.sql.Date. Son dos de las clases ms usadas


cuando una aplicacin implica el trabajo con fechas:
java.util.Date: Segn la documentacin "La clase java.util.Date representa un
instante de tiempo especfico, con precisin de milisegundos"; esto ms que ser
una especie de "autoadulacin" para la clase, quiere decir que no solo se trata de
una simple cadena al estilo yyyy/MM/dd, sino que almacena hasta milisegundos y
que es posible trabajar con ellos.
Antes del jdk1.1 la clase java.util.Date tena dos funciones adicionales a la que
conocemos ahora, una de ellas era la interpretacin de datos que tenan que ver
con fechas, como aos, das, segundos, entre otros. La otra era el formateo (la
forma como se muestra) y parseo (convertir un String a java.util.Date).
Pero debido a las dificultades que presentaban estas funcionalidades a la hora de
internacionalizar los programas, esos mtodos ya est obsoletos y la clase
java.util.Calendar se encarg de esto; as que en este momento esta clase, slo
hace lo que se mencion al principio: "representa un instante de tiempo especfico,
con precisin de milisegundos"; ms adelante veremos como ampliar esta
funcionalidad. Por ahora veamos las convenciones que sigue esta clase:
* El ao "y" est representado por un entero igual a ("y" - 1900). Por ejemplo el
ao 2004 se representa como 104 (2004 - 1900).
* Los meses son representados por nmeros entre 0 y 11, donde enero es 0 y
diciembre es 11.
* Los das y minutos se representan de forma corriente. Entre 1 - 31 y 0 - 59
respectivamente.
* Las horas van entre 0 y 23, donde la medianoche es 0 y el medio da 12.
* Los segundos van entre 0 y 61. 61 solo ocurre cuando se agrega el segundo
adicional para ajustar la diferencia entre el reloj atmico y el tiempo de rotacin de
la tierra.
No sobra mencionar que los mtodos para obtener el ao, mes y da de esta clase
ya estn obsoletos y lo nico que hacen es llamar a la clase java.util.Calendar para
que esta se encargue de hacerlo (una delegacin).
java.sql.Date: Esta clase hereda de java.util.Date y es la representacin de la
fecha cuando trabajamos con JDBC (Java DabaBase Connectivity), es decir, son los
campos almacenados en una base de datos cuyo tipo es una fecha que puede o no
incluir la hora, aunque la clase java.sql.Date siempre lo hace. Al igual que su clase
padre, tiene una precisin de milisegundos, con la excepcin que al mostrarla en la
salida estndar con el formato por defecto solo muestra el da, mes y ao. Hay que

anotar tambin que para campos que almacenen solamente horas existen otras
clases para manejarlos.
En resumen ambas clases, slo se encargan de almacenar la cantidad de
milisegundos que han pasado desde las 12 de la noche del primero de enero de
1970 en el meridiano de Greenwich. Aqu vienen dos puntos importantes:
a) Si la fecha que almacena cualquiera de las clases es menor a las 00:00:00 enero
1 de 1970 GMT, su valor el milisegundos ser negativo.
b) La fecha es susceptible a la zona horaria. Por ejemplo en Colombia los
milisegundos no se empiezan a contar desde enero 1 de 1970, sino a partir de las
19:00 de diciembre 31 de 1969. Esto es importante por que si transportamos una
fecha relativa de una zona a otra, podemos llegar a tener problemas al confiar en
los milisegundos que se tienen; adems como la clase intenta representar el
"Tiempo Universal Coordinado" (UTC) suma 0.9 segundos cada ao para ajustar la
diferencia entre el reloj atmico y la velocidad de rotacin de la tierra. Esto se
traduce en que muy dificilmente podemos basarnos en valores como 0 o 60000
para realizar validaciones, pues esos milisegundos no son controlables cuando
creamos la instancia de una fecha, peor an, los milisegundos no son ni siquiera
iguales para la misma fecha en la misma zona horaria.
Ambas clases se pueden instanciar directamente mediante new(), pero la
clase java.sql.Date necesita un parmetro en el constructor: el tiempo en
milisegundos, as que las siguientes instrucciones son vlidas y se muestra la
declaracion e inicializacion:
java.util.Date fechaActual = new java.util.Date(); //Fecha actual del
sistema
java.sql.Date inicioLocal = new java.sql.Date(0); //Milisegundo cero
//tambin se puede crear una instancia de java.util.Date con
parmetros iniciales
java.util.Date otraFecha = new java.util.Date(1000); //El primer
segundo a partir del inicio
Al imprimir cada uno de estos valores se puede observar diferencia de formatos
entre java.sql.Date y java.util.Date. Se puede pasar de java.sql.Date a
java.util.Date de dos fomas, una de ellas es con una asignacin simple:
java.util.Date utilDate = null;
java.sql.Date sqlDate = new java.sql.Date(0);
utilDate = sqlDate;
/* aunque es java.util.Date,
si la imprimes tendr el formato de java.sql.Date, recordemos que
java.sql.Date hereda de
java.util.Date */
System.out.println(utilDate);
Tambin se pueden tomar los milisegundos de java.sql.Date y pasarlos al
constructor de java.util.Date:
java.util.Date utilDate = null;
java.sql.Date sqlDate = new java.sql.Date(0);
utilDate = new java.util.Date(sqlDate.getTime());
//esta vez se mostrar con el formato de java.util.Date
System.out.println(utilDate);
Para pasar de java.util.Date a java.sql.Date se deben tomar los milisegundos de la
primera y pasarlos al constructor de la segunda:
java.util.Date utilDate = new java.util.Date();

java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());


//Con formato de java.sql.Date
System.out.println(sqlDate);
- Comparacin
Para comparar fechas usamos el mtodo compareTo() que internamente compara
los milisegundos entre ellas usando directamente los mtodos getTime() de ambas
clases.
java.util.Date utilDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
if (utilDate.compareTo(sqlDate) == 0){
System.out.println("IGUALES");
}else{
System.out.println("DIFERENTES");
}
O lo que es equivalente:
java.util.Date utilDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
if (utilDate.getTime() == sqlDate.getTime()){
System.out.println("IGUALES");
}else{
System.out.println("DIFERENTES");
}

-Formatos de fecha
Convertir objetos de la clase String al formato Date de Java. La clase
SimpleDateFormat en Java puede parsear fechas contenidas en el formato de la clase
String. Ya que los objetos que representan fechas y horas no se puede mostrar o

imprimir sin convertirlo primero a una cadena que est en el formato correcto.

Justo lo que es el formato "correcto"? En primer lugar, el formato debe ser


conforme a las convenciones de la del usuario final

Locale

. Por ejemplo, los

alemanes reconocen 04.20.09 como fecha vlida, pero los estadounidenses


esperan que la misma fecha que aparezca como

04/20/09

. En segundo lugar,

el formato deber incluir la informacin necesaria. Por ejemplo, un programa


que mide el rendimiento de la red puede informar de milisegundos
transcurridos. Un calendario de citas en lnea, probablemente no mostrar
milisegundos, pero mostrar los das de la semana.

En esta seccin se explica cmo dar formato a fechas y horas de diversas


formas y de manera sensible a la localidad. Si usted sigue estas tcnicas de sus
programas se mostrarn las fechas y horas en la adecuada configuracin
regional , pero el cdigo fuente se mantendr independiente de cualquier
especfico Locale .
Uso de formatos predefinidos

El DateFormat clase proporciona estilos de formato predefinidas que son


especfico del entorno local y fcil de usar.
Formatos Personalizacin

Con el SimpleDateFormat clase, usted puede crear, formatos especficos de la


localidad.
Cambio de formato de fecha Smbolos

Usando el DateFormatSymbols clase, puede cambiar los smbolos que


representan los nombres de los meses, das de la semana, y otros elementos de
formato.
public Date getDate(String date)
{
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
return df.parse(date);
} catch (ParseException ex) {
}
return null;
}
...

Cdigo de Ejemplo:
package beastieux.gui;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import java.util.Date;
import javax.swing.JOptionPane;

public class Ejm11_ConvertirStringEnDate {


public Date getDate(String date)
{
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
return df.parse(date);
} catch (ParseException ex) {
}
return null;
}
public static void main(String args[]) {
Ejm11_ConvertirStringEnDate obj = new Ejm11_ConvertirStringEnDate();

JOptionPane.showMessageDialog(null, obj.getDate("2010-12-20"));
}
}

Otro ejemplo:
1
2
3
4
5
6
7
8
9
1
0
1
1
1
2
1

package org.kodejava.example.text;
import
import
import
import

java.text.DateFormat;
java.text.ParseException;
java.text.SimpleDateFormat;
java.util.Date;

public class StringToDate {


public static void main(String[] args) {
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
try {
Date today = df.parse("20/12/2005");
System.out.println("Today = " + df.format(today));
} catch (ParseException e) {
e.printStackTrace();

3
1
4
1
5
1
}
6
}
1 }
7
1
8
1
9

-Lista de los patrones definidos que se pueden utilizar para dar formato a la fecha de toma de la
documentacin de la clase Java.

Carta

Fecha / hora de componentes

Ejemplos

Designador Era

AD

Ao

1996; 96

Mes en el ao

De julio, julio, 07

Semana en aos

27

Semana en meses

Da de ao

189

Da en el mes

10

Da de la semana en el mes

Da de la semana

Martes, mar

un

Am / pm indicador

PM

Hora del da (0-23)

Hora en das (1-24)

24

Hora de am / pm (0-11)

Hora de am / pm (1-12)

12

Minuto en horas

30

En segundo lugar, en minutos

55

Milisegundo

978

Huso horario

Hora estndar del Pacfico, PST, GMT-08: 00

Huso horario

-0800

Mtodos disponibles para la clase date.


getDate()
Devuelve el da del mes.

getDay()
Devuelve el da de la semana.
getHours()
Retorna la hora.
getMinutes()
Devuelve los minutos.
getMonth()
Devuelve el mes (atencin al mes que empieza por 0).
getSeconds()
Devuelve los segundos.
getTime()
Devuelve los milisegundos transcurridos entre el da 1 de enero de 1970 y la fecha
correspondiente al objeto al que se le pasa el mensaje.
getYear()
Retorna el ao, al que se le ha restado 1900. Por ejemplo, para el 1995 retorna 95, para el
2005 retorna 105. Este mtodo est obsoleto en Netscape a partir de la versin 1.3 de
Javascript y ahora se utiliza getFullYear().
getFullYear()
Retorna el ao con todos los dgitos. Usar este mtodo para estar seguros de que funcionar
todo bien en fechas posteriores al ao 2000.
setDate()
Actualiza el da del mes.
setHours()
Actualiza la hora.
setMinutes()
Cambia los minutos.
setMonth()
Cambia el mes (atencin al mes que empieza por 0).
setSeconds()
Cambia los segundos.
setTime()
Actualiza la fecha completa. Recibe un nmero de milisegundos desde el 1 de enero de 1970.
setYear()
Cambia el ao recibe un nmero, al que le suma 1900 antes de colocarlo como ao de la
fecha. Por ejemplo, si recibe 95 colocar el ao 1995. Este mtodo est obsoleto a partir de
Javascript 1.3 en Netscape. Ahora se utiliza setFullYear(), indicando el ao con todos los
dgitos.
setFullYear()
Cambia el ao de la fecha al nmero que recibe por parmetro. El nmero se indica completo
ej: 2005 o 1995. Utilizar este mtodo para estar seguros que todo funciona para fechas
posteriores a 2000.

Como se puede apreciar, hay algn mtodo obsoleto por cuestiones relativas al ao 2000:
setYear() y getYear(). Estos mtodos se comportan bien en Internet Explorer y no nos dar
ningn problema el utilizarlos. Sin embrago, no funcionarn correctamente en Netscape, por
lo que es interesante que utilicemos en su lugar los mtodos getFullYear() y setFullYear(),
que funcionan bien en Netscape e Internet Explorer.

Usando constructores se puede facilitar el manejo de fechas, as se define la clase


fecha, para la cual se declaran dos constructores, el primero sin parmetros (por lo tanto
se redefine el constructor por
defecto) y el segundo con tres parmetros:
/**
* Declaracion de la clase Fecha
*
*/
public class Fecha {
// Atributos o variables miembro
private int dia;
private int mes;
private int anho;
/**
* Constructor 1
* Asigna los valores 1, 1 y 2000 a los atributos
* dia, mes y anho respectivamente
*/
public Fecha() {
dia = 1;
mes = 1;
anho = 2000;
}
/**
* Constructor 2
* @param ndia el dia del mes a almacenar
* @param nmes el mes del anho a almacenar
* @param nanho el anho a almacenar
*/
public Fecha(int ndia, int nmes, int nanho) {
dia = ndia;
mes = nmes;
anho = nanho;
}
public String toString() {
return dia + "/" + mes + "/" + anho;
}
}
/**
* Ejemplo de uso de la clase Fecha
*/
public class PruebaFecha {
public static void main (String [] args) {
Fecha origen = new Fecha();
Fecha actual = new Fecha(16,2,2009);
System.out.println("Primera fecha: " + origen.toString());
System.out.println("Segunda fecha: " + actual.toString())
}
}

-Clase Calendar.
Consideraciones a tener en cuenta para realizar operaciones con la clase Calendar
1) Para definir una fecha se utiliza el mtodo set(), cuyo constructor viene sobrecargado con
diferentes parmetros.
Ejemplo :

01
02
03
04
05
06
07
08

/**
* Definiendo fechas
*/
System.out.println("[ Definiendo Fechas ]\n");
//Instancia a calendar
Calendar fecha = Calendar.getInstance();

//Imprimiendo fecha actual


System.out.println(String.format("Fecha actual: %1$tY-%1$tm-%1$td",
09
fecha.getTime()));
10
11 //Cambiando de fecha
12 fecha.set(2011, 8, 28);
System.out.println(String.format("He cambiado la fecha a : %1$tY13
%1$tm-%1$td", fecha.getTime()));
14
15 //Modificando el mes
16 fecha.set(Calendar.MONTH, 9);
System.out.println(String.format("He cambiado el mes : %1$tY-%1$tm17
%1$td", fecha.getTime()));
18
19 //Modificando el anio
20 fecha.set(Calendar.YEAR, 2010);
System.out.println(String.format("He cambiado el anio a : %1$tY21
%1$tm-%1$td",
fecha.getTime()));
Salida
[ Definiendo Fechas ]

Fecha actual: 2011-10-16


He cambiado la fecha a : 2011-09-28
He cambiado el mes : 2011-10-28
He cambiado el anio a : 2010-10-28
2) Para sumar o restar Aos, Meses, Semanas, Dias, Horas, Minutos, Segundos o Milisegundos se
utiliza el metodo add().
3) Para sumar se debe utilizar el formato add(Campo, Valor), para restar el valor se coloca
negativo add(Campo, -Valor).
Ejemplo :

01
02
03
04
05
06
07
08
09

/**
* Realizando Operaciones
*/
System.out.println("\n[ Operando con Fechas ]\n");
//Instancia a calendar
Calendar fecha = Calendar.getInstance();

10 //Sumando dias
System.out.println(String.format("Fecha antes de la suma de dias :
11
%1$tY-%1$tm-%1$td",
12
fecha.getTime()));
13 fecha.add(Calendar.DATE, 35);
System.out.println(String.format("He sumado 35 dias y ahora tengo :
14
%1$tY-%1$tm-%1$td",
15
fecha.getTime()));
16
17 //Restando meses
System.out.println(String.format("Fecha antes de la resta de anios :
18
%1$tY-%1$tm-%1$td",
19
fecha.getTime()));
20 fecha.add(Calendar.YEAR, -5);
System.out.println(String.format("He restado 5 anios y ahora tengo :
21
%1$tY-%1$tm-%1$td",
22
fecha.getTime()));
23
24 //Sumando horas
System.out.println(String.format("Fecha antes de la suuma de horas :
25
%1$tY-%1$tm-%1$td",
26
fecha.getTime()));
27 fecha.add(Calendar.HOUR, 1200);
System.out.println(String.format("He sumado 1200 horas y ahora tengo
28
: %1$tY-%1$tm-%1$td",
29
fecha.getTime()));
Salida
[ Operando con Fechas ]

Fecha antes de la suma de dias : 2010-10-28


He sumado 35 dias y ahora tengo : 2010-12-02
Fecha antes de la resta de anios : 2010-12-02
He restado 5 anios y ahora tengo : 2005-12-02
Fecha antes de la suuma de horas : 2005-12-02
He sumado 1200 horas y ahora tengo : 2006-01-21
4) Para comparar fechas se utiliza el mtodo compareTo(). Esta comparacion se realiza de una fecha en
relacion con otra fecha. El resultado que arroja el mtodo compareTo es un entero que se interpreta de
la siguiente forma :
-1 : La fecha 1 es menor a la fecha 2
0 : Las fechas son iguales
1 : La fecha 1 es mayor a la fecha 2
Ejemplo :

01 public static void main(String[] args) {


02
/**
03
* Comparando fechas
04
*/
05
06
System.out.println("\n[ Comparando 2 fechas ]\n");
07
08
Calendar fecha1 = Calendar.getInstance();
09
Calendar fecha2 = Calendar.getInstance();
10
fecha2.set(2011,11, 31);

11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

Calendar fecha3 = Calendar.getInstance();


fecha3.set(2005,3,15);
//Imprimo la fecha 1
System.out.println(String.format("Fecha 1 : %1$tY-%1$tm-%1$td",
fecha1.getTime()));
//Imprimo la fecha 2
System.out.println(String.format("Fecha 2 : %1$tY-%1$tm-%1$td",
fecha2.getTime()));
//Imprimo la fecha 3
System.out.println(String.format("Fecha 3 : %1$tY-%1$tm-%1$td",
fecha3.getTime()));
System.out.println("\nComparando las fechas \n");
System.out.println(compararFechas(fecha1, fecha2));
System.out.println(compararFechas(fecha2, fecha1));
System.out.println(compararFechas(fecha1, fecha3));
System.out.println(compararFechas(fecha2, fecha3));
System.out.println(compararFechas(fecha1, fecha1));
}
/**
* Metodo que compara 2 fechas y muestra el resultado
* @param fecha1
* @param fecha2
* @return
*/

39 public static String compararFechas(Calendar fecha1, Calendar


fecha2){
if(fecha1.compareTo(fecha2) < 0)
{
return "Comparacion : " + (String.format("%1$tY-%1$tm40 %1$td", fecha1)) +
" es menor a " +
(String.format("%1$tY-%1$tm-%1$td", fecha2));
}
else if(fecha1.compareTo(fecha2) > 0){
41

return "Comparacion : " + (String.format("%1$tY-%1$tm-%1$td",


fecha1)) +

" es mayor a " + (String.format("%1$tY-%1$tm-%1$td",


fecha2));
43
}else{
44
return "Comparacion : Las fechas son iguales "
45
+ (String.format("%1$tY-%1$tm-%1$td", fecha2));
46
}
47 }
42

Salida
[ Comparando varias fechas ]

Fecha 1 : 2011-10-16
Fecha 2 : 2011-12-31
Fecha 3 : 2005-04-15

[ Resultados de la comparacion ]

Comparacion : 2011-10-16 es menor a 2011-12-31


Comparacion : 2011-12-31 es mayor a 2011-10-16
Comparacion : 2011-10-16 es mayor a 2005-04-15
Comparacion : 2011-12-31 es mayor a 2005-04-15
Comparacion : Las fechas son iguales 2011-10-16

Vous aimerez peut-être aussi