cadenas y fechas java 2

26
REPUBLICA BOLIVARIANA DE VENEZUELA M. P. P. P. EDUCACIÓN SUPERIOR INSTITUTO UNIVERSITARIO POLITECNICO “SANTIAGO MARIÑO” EXT. BARCELONA INGENIERIA DE SISTEMAS Programación No Numérica I Facilitador: Prof. Aquiles Participantes:

Upload: nav-williams

Post on 17-Dec-2015

228 views

Category:

Documents


1 download

DESCRIPTION

El lenguaje de programación Java, originalmente desarrollado por James Gosling de Sun Microsystems (adquirida por la compañía 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 máquina virtual Java (JVM) sin importar la arquitectura de la computadora subyacente.

TRANSCRIPT

REPUBLICA BOLIVARIANA DE VENEZUELA

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.

Ellenguaje de programacinJava, originalmente desarrollado porJames GoslingdeSun Microsystems(adquirida por la compaaOracle) y publicado en el 1995 como un componente fundamental de laplataforma Javade Sun Microsystems, deriva mucho en su sintaxis deCyC++ y aunque tiene menos facilidades debajo nivelque cualquiera de ellos, sus aplicaciones son generalmentecompiladasabytecode(clase Java) que puede ejecutarse en cualquiermquina virtual Java(JVM) sin importar la arquitectura de la computadora subyacente. Java es un lenguaje de programacin depropsito general,concurrente,orientado a objetosybasado en clasesque fue diseado especficamente para tener tan pocas dependencias de implementacin como fuera posible. Su intencin es permitir que losdesarrolladoresde aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en ingls comoWORA, o "write once, run anywhere"), lo que quiere decir que elcdigoque 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 decliente-servidorde 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 ejecutarappletsJava incrustadas en las pginas web. Java ha experimentado numerosos cambios desde la versin primigenia,JDK1.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:

Enprogramacin, unacadena de caracteres, palabra, ristrade caracteresofrase(stringeningls) es una secuencia ordenada de longitud arbitraria, aunque finita de elementos que pertenecen a un ciertolenguaje formaloalfabetoanlogas a unafrmulao a una oracin. En general, unacadena de caractereses una sucesin decaracteres(letras,nmerosu otrossignososmbolos).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 uncarcter) 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 comoresultadolo 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:-LONGITUDDE UNA CADENA

Lalongitudde una cadena podemos obtener con el mtodo length() de la siguiente manera

String Palabra3="Midiendo milongitud";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 palabraencontrada, si lo hubiera. Por ejemplo

System.out.println(Palabra3.indexOf("longitud"));

Esto nos retornara 12 ya que en la Palabra3 tenemos la cadena Midiendo milongitud y la palabralongitudidentifica el inicio del mismo

-SUB CADENAS O SUBSTRING

Aqu veamos la forma de obtener cierta porcin de una cadena, por ejemplo. Si quisiramos la palabralongitudde 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 palabralongitudempieza en ese punto y luego se pasa el valor Palabra3.length lo cual retornara lalongitudde Palabra3 es decir hasta el final as obteniendo la porcin que se desea obtener dara el mismoresultadosi pondramos

System.out.println(Palabra3.substring(12, 20));

HASTA AQU PRIMERA ENTREGA

JOE DESDE AQU SEGUNDA PARTETrabajar 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 1970en 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 0o 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 mediantenew(), pero la clasejava.sql.Datenecesita 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 sistemajava.sql.Date inicioLocal = new java.sql.Date(0); //Milisegundo cero//tambin se puede crear una instancia de java.util.Date con parmetros inicialesjava.util.Date otraFecha = new java.util.Date(1000); //El primer segundo a partir del inicioAl 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.DateSystem.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.DateSystem.out.println(sqlDate);- ComparacinPara 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 horasno se puede mostrar o imprimir sin convertirlo primero a unacadenaque 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 finalLocale.Por ejemplo, los alemanes reconocen04.20.09como fecha vlida, pero los estadounidenses esperan que la misma fecha que aparezca como04/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 adecuadaconfiguracin regional, pero el cdigo fuente se mantendr independiente de cualquier especficoLocale.

Uso de formatos predefinidosElDateFormatclase proporciona estilos de formato predefinidas que son especfico del entorno local y fcil de usar.

Formatos PersonalizacinCon elSimpleDateFormatclase, usted puede crear, formatos especficos de la localidad.

Cambio de formato de fecha SmbolosUsando elDateFormatSymbolsclase, 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

10

11

12

13

14

15

16

17

18

19package org.kodejava.example.text;

import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import 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();}}}

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

CartaFecha / hora de componentesEjemplos

TDesignador EraAD

yAo1996; 96

MMes en el aoDe julio, julio, 07

wSemana en aos27

WSemana en meses2

DDa de ao189

dDa en el mes10

FDa de la semana en el mes2

EDa de la semanaMartes, mar

unAm / pm indicadorPM

HHora del da (0-23)0

kHora en das (1-24)24

KHora de am / pm (0-11)0

hHora de am / pm (1-12)12

mMinuto en horas30

sEn segundo lugar, en minutos55

SMilisegundo978

zHuso horarioHora estndar del Pacfico, PST, GMT-08: 00

ZHuso 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 Calendar1) Para definir una fecha se utiliza elmtodoset(), cuyo constructor viene sobrecargado con diferentesparmetros.

Ejemplo :01/**

02* Definiendo fechas

03*/

04System.out.println("[ Definiendo Fechas ]\n");

05//Instancia a calendar

06Calendar fecha = Calendar.getInstance();

07

08//Imprimiendo fecha actual

09System.out.println(String.format("Fecha actual: %1$tY-%1$tm-%1$td", fecha.getTime()));

10

11//Cambiando de fecha

12fecha.set(2011,8,28);

13System.out.println(String.format("He cambiado la fecha a : %1$tY-%1$tm-%1$td", fecha.getTime()));

14

15//Modificando el mes

16fecha.set(Calendar.MONTH,9);

17System.out.println(String.format("He cambiado el mes : %1$tY-%1$tm-%1$td", fecha.getTime()));

18

19//Modificando el anio

20fecha.set(Calendar.YEAR,2010);

21System.out.println(String.format("He cambiado el anio a : %1$tY-%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 restarAos, Meses, Semanas, Dias, Horas, Minutos, Segundos o Milisegundosse utiliza el metodoadd().3)Para sumar se debe utilizar el formatoadd(Campo, Valor), para restar el valor se coloca negativoadd(Campo, -Valor).Ejemplo :01/**

02* Realizando Operaciones

03*/

04

05System.out.println("\n[ Operando con Fechas ]\n");

06

07//Instancia a calendar

08Calendar fecha = Calendar.getInstance();

09

10//Sumando dias

11System.out.println(String.format("Fecha antes de la suma de dias : %1$tY-%1$tm-%1$td",

12fecha.getTime()));

13fecha.add(Calendar.DATE,35);

14System.out.println(String.format("He sumado 35 dias y ahora tengo : %1$tY-%1$tm-%1$td",

15fecha.getTime()));

16

17//Restando meses

18System.out.println(String.format("Fecha antes de la resta de anios : %1$tY-%1$tm-%1$td",

19fecha.getTime()));

20fecha.add(Calendar.YEAR, -5);

21System.out.println(String.format("He restado 5 anios y ahora tengo : %1$tY-%1$tm-%1$td",

22fecha.getTime()));

23

24//Sumando horas

25System.out.println(String.format("Fecha antes de la suuma de horas : %1$tY-%1$tm-%1$td",

26fecha.getTime()));

27fecha.add(Calendar.HOUR,1200);

28System.out.println(String.format("He sumado 1200 horas y ahora tengo : %1$tY-%1$tm-%1$td",

29fecha.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 elmtodocompareTo(). Esta comparacion se realiza de una fecha en relacion con otra fecha.El resultado que arroja elmtodocompareToes un entero que se interpreta de la siguiente forma :

-1: La fecha 1 esmenora la fecha 20: Las fechas soniguales1: La fecha 1 esmayora la fecha 2

Ejemplo :01publicstaticvoidmain(String[] args) {

02/**

03* Comparando fechas

04*/

05

06System.out.println("\n[ Comparando 2 fechas ]\n");

07

08Calendar fecha1 = Calendar.getInstance();

09Calendar fecha2 = Calendar.getInstance();

10fecha2.set(2011,11,31);

11Calendar fecha3 = Calendar.getInstance();

12fecha3.set(2005,3,15);

13

14//Imprimo la fecha 1

15System.out.println(String.format("Fecha 1 : %1$tY-%1$tm-%1$td",

16fecha1.getTime()));

17//Imprimo la fecha 2

18System.out.println(String.format("Fecha 2 : %1$tY-%1$tm-%1$td",

19fecha2.getTime()));

20//Imprimo la fecha 3

21System.out.println(String.format("Fecha 3 : %1$tY-%1$tm-%1$td",

22fecha3.getTime()));

23

24System.out.println("\nComparando las fechas \n");

25System.out.println(compararFechas(fecha1, fecha2));

26System.out.println(compararFechas(fecha2, fecha1));

27System.out.println(compararFechas(fecha1, fecha3));

28System.out.println(compararFechas(fecha2, fecha3));

29System.out.println(compararFechas(fecha1, fecha1));

30

31}

32

33/**

34* Metodo que compara 2 fechas y muestra el resultado

35* @param fecha1

36* @param fecha2

37* @return

38*/

39publicstaticString compararFechas(Calendar fecha1, Calendar fecha2){

40if(fecha1.compareTo(fecha2) 0){

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

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

43}else{

44return"Comparacion : Las fechas son iguales "

45+ (String.format("%1$tY-%1$tm-%1$td", fecha2));

46}

47}

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