some image

Author Edwin Torres

Operaciones de fechas con Calendar (java)

Etiquetas: Blog, Programación 5 comments

Consideraciones a tener en cuenta para realizar operaciones con la clase Calendar

1) Para definir una fecha se utiliza el método set(), cuyo constructor viene sobrecargado con diferentes parámetros.

Ejemplo :

/**
 * 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",	fecha.getTime()));

//Cambiando de fecha
fecha.set(2011, 8, 28);
System.out.println(String.format("He cambiado la fecha a : %1$tY-%1$tm-%1$td",	fecha.getTime()));

//Modificando el mes
fecha.set(Calendar.MONTH, 9);
System.out.println(String.format("He cambiado el mes  : %1$tY-%1$tm-%1$td", fecha.getTime()));

//Modificando el anio
fecha.set(Calendar.YEAR, 2010);
System.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 restar Años, 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 :

/**
 * Realizando Operaciones
 */

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

//Instancia a calendar
Calendar fecha = Calendar.getInstance();

//Sumando dias
System.out.println(String.format("Fecha antes de la suma de dias : %1$tY-%1$tm-%1$td",
		fecha.getTime()));
fecha.add(Calendar.DATE, 35);
System.out.println(String.format("He sumado 35 dias y ahora tengo : %1$tY-%1$tm-%1$td",
		fecha.getTime()));

//Restando meses
System.out.println(String.format("Fecha antes de la resta de anios : %1$tY-%1$tm-%1$td",
		fecha.getTime()));
fecha.add(Calendar.YEAR, -5);
System.out.println(String.format("He restado 5 anios y ahora tengo : %1$tY-%1$tm-%1$td",
		fecha.getTime()));

//Sumando horas
System.out.println(String.format("Fecha antes de la suuma de horas : %1$tY-%1$tm-%1$td",
		fecha.getTime()));
fecha.add(Calendar.HOUR, 1200);
System.out.println(String.format("He sumado 1200 horas y ahora tengo : %1$tY-%1$tm-%1$td",
		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 método compareTo().  Esta comparacion se realiza de una fecha en relacion con otra fecha. El resultado que arroja el método 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 :

	public static void main(String[] args) {
		/**
		 * Comparando fechas
		 */

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

		Calendar fecha1 = Calendar.getInstance();
		Calendar fecha2 = Calendar.getInstance();
		fecha2.set(2011,11, 31);
		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
	 */
	public static String compararFechas(Calendar fecha1, Calendar fecha2){
		if(fecha1.compareTo(fecha2) < 0){ 			return "Comparacion : " + (String.format("%1$tY-%1$tm-%1$td", fecha1)) +  					" es menor a " + (String.format("%1$tY-%1$tm-%1$td", fecha2)); 		}else if(fecha1.compareTo(fecha2) > 0){
			return "Comparacion : " + (String.format("%1$tY-%1$tm-%1$td", fecha1)) + 
					" es mayor a " + (String.format("%1$tY-%1$tm-%1$td", fecha2));
		}else{
			return "Comparacion : Las fechas son iguales " 
					+ (String.format("%1$tY-%1$tm-%1$td", fecha2));
		}
	}

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

Ejemplo de Login usando JFrame y Patron MVC

Etiquetas: Blog, Programación 9 comments

El resultado de este código, fue un ejercicio que me pusieron en la universidad, aunque no tiene un grado de complejidad es muy útil para entender algunos conceptos al momento de desarrollar utilizando un Diagrama de clases y aplicando los conceptos del patrón MVC.

Consideraciones

Este código se compone de 3 Clases :
Login : Muestra una interface que representa el Login de los usuarios. Esta interface es creada con JFrame (Vista)
Operaciones : Permite realizar las operaciones cuando el usuario interacciona con la ventana a través de eventos. (Controlador)
DAO : Persiste todos los datos por Login y valida los datos del usuario. (Modelo).

Codeando las clases :)

Clase Login

import java.awt.Button;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

/**
 * Clase que muestra una ventana de Login y simula la validacion de un usuario
 * tomado de un arreglo de datos definidos en la clase DAO.
 *
 * Esta se la representacion de la vista
 *
 * http://codesandtags.org
 *
 */
public class Login extends JFrame implements ActionListener {

	// Atributos de la clase
	private Frame ventana;
	private Button botonValidar;
	private Label lusuario;
	private Label lclave;
	private TextField tusuario;
	private TextField tclave;
	private final int ancho = 400;
	private final int alto = 320;
	private final int x = 350;
	private final int y = 230;

	/**
	 * Constructor que pinta la ventana de Login
	 */
	public Login() {
		pintarVentana();
		eventosVentana();
	}

	/**
	 * Configuracion para pintar la ventana
	 */
	private void pintarVentana() {
		// Instancia de la ventana y titulo
		ventana = new Frame(".:: Acceso de Usuarios ::.");
		// Defino la posicion y el tamaño de la ventana
		ventana.setBounds(x, y, ancho, alto);
		ventana.setLayout(null);
		ventana.setBackground(Color.black);
		ventana.setForeground(Color.green);

		// Labels
		lusuario = new Label("Usuario : ");
		lusuario.setBounds(80, 100, 100, 25);
		lusuario.setFont(new Font("verdana", Font.TRUETYPE_FONT, 14));
		lclave = new Label("Clave    : ");
		lclave.setBounds(80, 130, 100, 25);
		lclave.setFont(new Font("verdana", Font.TRUETYPE_FONT, 14));

		// TextFields
		tusuario = new TextField();
		tusuario.setBounds(185, 100, 100, 25);
		tusuario.setForeground(Color.black);
		tusuario.setFont(new Font("verdana", Font.BOLD, 12));
		tclave = new TextField();
		tclave.setBounds(185, 130, 100, 25);
		tclave.setForeground(Color.black);
		tclave.setEchoChar('*');
		tclave.setFont(new Font("verdana", Font.BOLD, 12));

		// Botones
		botonValidar = new Button(" Validar ");
		botonValidar.setBounds(160, 250, 100, 30);
		botonValidar.addActionListener(this);
		botonValidar.setForeground(Color.black);

		// Adicion de componentes
		ventana.add(botonValidar);
		ventana.add(lusuario);
		ventana.add(lclave);
		ventana.add(tusuario);
		ventana.add(tclave);
	}

	/**
	 * Manejo de eventos de la ventana
	 */
	private void eventosVentana() {
		// Manejo de eventos de la ventana
		ventana.addWindowListener(new WindowAdapter() {
			// Cerrando ventana
			public void windowClosing(WindowEvent e) {
				System.out.println("Se ha cerrado la ventana");
				System.exit(0);
			}

			// Ventana abierta
			public void windowOpened(WindowEvent e) {
				System.out.println("Ventana abierta");
			}

			// Ventana activa
			public void windowActivated(WindowEvent e) {
				System.out.println("Ventana activa");
			}

			// Ventana inactiva
			public void windowDeactivated(WindowEvent e) {
				System.out.println("Ventana inactiva");
			}

			// Cuando se minimiza la ventana
			public void windowIconified(WindowEvent e) {
				System.out.println("Ventana minimizada");
			}

			// Cuando se maximiza la ventana
			public void windowDeiconified(WindowEvent e) {
				System.out.println("Ventana restaurada");
			}
		});

	}

	/**
	 * Manejo de eventos en la aplicacion en la interaccion con el usuario, por
	 * ejemplo el boton validar
	 */
	public void actionPerformed(ActionEvent e) {
		// Pulsar el boton validar
		if (e.getSource() == botonValidar) {
			String usuario = tusuario.getText();
			String clave = tclave.getText();

			Operaciones operacion = new Operaciones();

			if (operacion.validar(usuario, clave)) {
				JOptionPane.showMessageDialog(ventana, " Bienvenido " + usuario
						+ "!", " Validacion Login ",
						JOptionPane.INFORMATION_MESSAGE);
			} else {
				JOptionPane.showMessageDialog(ventana, " Acceso Denegado ",
						" Validacion Login ", JOptionPane.ERROR_MESSAGE);
			}
		}
	}

	/**
	 * Muestra la ventana
	 */
	public void mostrar() {
		ventana.setVisible(true);
	}

	/**
	 * Metodo main de la clase que se encarga el arreglo
	 *
	 * @param args
	 */
	public static void main(String[] args) {
		// Creacion del objeto login
		Login login = new Login();
		login.mostrar();
	}

}

Clase Operaciones

/***
 * Clase que se encarga de realizar las operaciones de la ventana de Login. Esta
 * es la representacion del controlador quien recibe los eventos gestionados por
 * el usuario
 *
 * http://codesandtags
 */
public class Operaciones {

	/**
	 * Se instancia la clase DAO y se invoca el metodo validar el cual devuelve
	 * un boolean con el resultado de la validacion
	 *
	 * @param usuario
	 * @param clave
	 * @return
	 */
	public boolean validar(String usuario, String clave) {
		DAO dao = new DAO();
		return dao.validar(usuario, clave);
	}
}

Clase DAO

import java.util.StringTokenizer;

/**
 * Clase que se encarga de manejar la parte de "persistencia" de los datos y
 * genera la validacion de un usuario que se loguea en la aplicacion. Esta es la
 * representacion del modelo.
 *
 * http://codesandtags.org
 *
 */
public class DAO {
	private String usuarios[];
	private String claves[];

	public DAO() {
		usuarios = new String[100];
		claves = new String[100];

		cargarDatos();
	}

	private void cargarDatos() {
		// Definicion de los datos a llenar
		String listaUsuarios = "admin,administrator,dmk,cocoman,angelica,javier,edwin,"
				+ "natalia,jorge,erika,jaime,andrea,carolina,roberto,sergio,andres,stiven,lorena,ana,martha";
		String listaClaves = "admin,administrator,123456,112233,angel,javi123,edwin456,"
				+ "nata55,jorgillo,erika,jaimenez,andreluz,caro,robert,sergio9,andrex,stive,loren,anita,martucha";

		// Ingreso la lista en los arreglos
		StringTokenizer stUsuario = new StringTokenizer(listaUsuarios, ",");
		StringTokenizer stClave = new StringTokenizer(listaClaves, ",");

		int elementos = stUsuario.countTokens();

		for (int i = 0; i < elementos; i++) {
			usuarios[i] = stUsuario.nextToken();
			claves[i] = stClave.nextToken();
		}

		// Muestro el arreglo por si las moscas
		/*
		 * for (int i = 0; i < usuarios.length; i++) { System.out.println((i +
		 * 1) + " " +usuarios[i] + ":" + claves[i]); }
		 */
	}

	public boolean validar(String usuario, String clave) {

		for (int i = 0; i < usuarios.length && usuarios[i] != null; i++) {
			if (usuarios[i].equals(usuario) && claves[i].equals(clave)) {
				return true;
			}
		}
		return false;
	}

	public static void main(String[] args) {
		DAO dao = new DAO();
	}

}

Ejemplos de la ejecución de la aplicación :

Ejercicios de Programación Algoritmia

Etiquetas: , Blog, Programación No comments

En este Post colocaré aquellos ejercicios propuestos en documentos, en talleres, por personas, profesores y ejercicios curiosos. La idea es documentarlos de alguna forma y mostrar su posible solución para que en un futuro puedan ser de utilidad a alguien más :) .

NOTA : Si tienes ejercicios que no están aquí y te gustaría compartir para analizar su solución te lo agradecería bastante :).

Ejercicios simples de Validaciones

  • Leer el año de nacimiento de una persona y determinar si es mayor o menor de edad. ( Ver Ejemplo )
  • Leer un número y determinar si es par o impar. ( Ver Ejemplo )
  • Leer un número y determinar si es múltiplo de tres. ( Ver Ejemplo )
  • Leer dos números y determinar si están en orden ascendente o descendente. ( Ver Ejemplo )
  • Leer dos números y determinar si el primero es múltiplo del segundo. ( Ver Ejemplo )
  • Leer un numero y si es positivo hallar su raíz cuadrada, de lo contrario escribir raíz imaginaria. ( Ver Ejemplo )
  • Desarrollar un algoritmo que calcule la media de 2 números dados. ( Ver Ejemplo )
  • Desarrollar un algoritmo que escriba el nombre de los días de la semana en función al valor de una variable día introducida por teclado.  ( Ver Ejemplo )
  • Desarrollar un algoritmo que calcule la potencia entera de un numero cualquiera.
  • Determinar si una persona gana más o menos de dos salarios mínimos mensuales, muestre un mensaje con la información correspondiente.
  • Leer una fecha con año, mes y día y determinar si el año de la fecha es bisiesto o no. El primer año bisiesto de este siglo fue el 2.000. Imprimir el mensaje correspondiente.
  • Leer tres números y organizarlos ascendentemente.
  • Determinar el precio de un pasaje de ida y vuelta en bus, conociendo la distancia a recorrer y sabiendo el número de días de estancia. Si el número de días es superior a 12 y la distancia es inferior a 500 Kms. el pasaje tiene una reducción del 30%. El precio por kilómetro es de $1.500.
  • Calcular el valor a pagar por una compra conociendo la cantidad y el valor unitario, si la cantidad es mayor de 500, el descuento es del 5%, en caso contrario no hay descuento. Mostrar la cantidad, el valor total y el valor menos el descuento.
  • Leer tres variables X, Y, Z. Si Z es menor o igual a Y asignarle a Y el valor de Z+1, si Z es menor o igual a X, asignarle a X el valor de Z+2, si Z no es menor o igual a X o Y, asignarle a Z el valor de Z+3.
  • Clasificar un triangulo en función de sus lados : Equilátero (todos iguales), Isósceles (2 lados iguales 1 diferente), Escaleno (todos diferentes). Verifique la condición del triangulo : “La suma de dos lados cualquiera debe ser mayor a la del otro lado”.
  • Desarrollar un algoritmo que calcule el promedio de calificaciones de un estudiante, teniendo en cuenta la equivalencia de cada periodo : 1) 30%, 2) 30% 3) 60%.
  • Escribir un programa que asigne una calificación en letras a un estudiante basado en la siguiente tabla de puntuaciones :
Puntuaciones Calificación
0.0 – 1.9 I
2.0 – 2.9 R
3.0 – 3.9 A
4.0 – 4.4 S
4.5 – 5.0 E

* Para puntuaciones diferentes el mensaje “Dato Errado”

– Escribir un programa que calcule el valor del IVA de un producto, conociendo la clase de producto y con la siguiente tabla de porcentajes.

Clase Porcentaje
0 0%
1 6%
2 12%
3 16%
4 30%

Conversiones de números

  • Convertir un numero de binario a decimal. (Ver ejemplo)
  • Convertir un numero de decimal a binario. (Ver ejemplo)
  • Convertir un numero de octal a decimal. (Ver ejemplo)
  • Convertir un numero de decimal a octal. (Ver ejemplo)
  • Convertir un numero de hexadecimal a decimal. (Ver ejemplo)
  • Convertir un numero de decimal a hexadecimal. (Ver ejemplo)
  • Convertir un numero de decimal a una base cualquiera. (Ver ejemplo)

Manejo de Bucles

  • Desarrollar un algoritmo para calcular el factorial de un numero n ingresado por teclado.
  • Desarrollar un algoritmo que imprima las 10 primeras potencias de un número dado.  (Ver ejemplo)
  • Desarrollar un algoritmo que imprima 1000 veces un texto ingresado por teclado.  (Ver ejemplo)
  • Desarrollar un algoritmo que imprima las tablas de multiplicar de un numero dado. (Ver ejemplo)

Ejercicios Analíticos / Matemáticos

  • Leer el radio de un circulo y calcular e imprimir el área y el perímetro.
  • Solucionar la ecuación de primer grado AX + B = 0, donde A y B son los datos y las posibles soluciones son :
    A != 0, entonces X = -B/A
    A = 0 y B != 0, entonces “Solución imposible”
    A = 0 y B = 0 entonces “Solución indeterminada”

Ejercicios con Arreglos / Matrices

  • Recorrer una matriz en Espiral. ( Ver Ejemplo ).
  • Recorrer una matriz cuadrada en varias direcciones. ( Ver Ejemplo).

Coming soon : Codes and Tags [Storage]

Validar Mayor de Edad

Etiquetas: , Blog, Programación 3 comments

Leer el año de nacimiento de una persona y determinar si es mayor o menor de edad.

import java.util.Calendar;

public class MayoriaDeEdad {

	//Constante de la edad
	private final int mayorEdad = 18;

	/**
	 * Determina si es mayor de edad
	 * @param edad
	 * @return
	 */
	public boolean esMayorDeEdad(int anioNacimiento){

		//Obtengo el anio actual
		Calendar fecha = Calendar.getInstance();
		int anioActual = fecha.get(Calendar.YEAR);

		//Calculo para determinar si es mayor de edad
		return ( (anioActual - anioNacimiento) >= mayorEdad);
	}

	public static void main(String[] args){
		MayoriaDeEdad ejemplo = new MayoriaDeEdad();

		System.out.println("Juan nacio en 1990 ¿Es mayor de edad? : "
				+ ejemplo.esMayorDeEdad(1990));
		System.out.println("Angela nacio en 1988 ¿Es mayor de edad? : "
				+ ejemplo.esMayorDeEdad(1988));
		System.out.println("Carlos nacio en 1995 ¿Es mayor de edad? : "
				+ ejemplo.esMayorDeEdad(1995));
		System.out.println("Viviana nacio en 1994 ¿Es mayor de edad? : "
				+ ejemplo.esMayorDeEdad(1994));
	}

}

Salida

Juan nacio en 1990 ¿Es mayor de edad? : true
Angela nacio en 1988 ¿Es mayor de edad? : true
Carlos nacio en 1995 ¿Es mayor de edad? : false
Viviana nacio en 1994 ¿Es mayor de edad? : false

Manejo de fechas en Java Calendar : Impresion

Etiquetas: Blog, Programación No comments

Por lo general en durante el desarrollo de aplicaciones es común manejar fechas para registro de logs, saber la fecha y hora actual, realizar operaciones entre fechas para saber si existen productos vencidos o incluso, conocer si un usuario debe cambiar la clave porque paso el tiempo de caducidad de la contraseña.

De esta forma en Java es muy facil manejar las fechas con la clase Calendar, ya que nos permite realizar todas las operaciones comentadas anteriormente y reemplaza el uso de la clase Date, la cual esta Obsoleta (Deprecated).

Consideraciones a tener en cuenta al momento de utilizar la clase Calendar

1). La clase Calendar es una clase abstracta, por lo tanto no se pueden crear objetos nuevos con la instruccion new(). Se debe utilizar el metodo Calendar.getInstance(), el cual crea una instancia de la clase Calendar.

2) La clase Calendar para hacer mucho mas fácil su uso, utiliza constantes con nombres nemotécnicos, por ejemplo : DAY_OF_MONTH, YEAR, DAY_OF_WEEK, SUNDAY, SEPTEMBER, WEEK_OF_MONTH, WEEK_OF_MYEAR, AM, etc… Para conocer mejor el valor de cada variable y su uso recomiendo utilizar el API de Calendar.

3) Los meses del año vienen enumerados desde el 0 (January / Enero) hasta el 11 (December / Diciembre).

4) Los dias de la semana vienen enumerados desde el 1 (Sunday / Domingo) hasta el 7 (Saturday / Sabado).

5) Para formatear la fecha se puede utilizar el método format() de la clase String. ver Api String

Clase de ejemplo : 

 

import java.util.Calendar;

/**
 * Clase de ejemplo para el manejo de fechas en Java
 *
 * @author [d-m-k]
 * http://codesandtags.org
 */

public class ManejoFechasCalendar {
	public static void main(String[] args) {
		// Se obtiene una instancia a la clase Calendar
		Calendar fecha = Calendar.getInstance();

		/**
		 * Obteniendo la fecha actual
		 */
		System.out.println("[ Imprimiendo fechas ]\n");

		// 1. Obtiene la fecha actual con el formato Estandar
		System.out.println("Fecha actual : " + fecha.getTime());

		// 2. Obtiene la fecha actual en milisegundos desde el Ene. 1 de 1970
		System.out.println("Fecha actual en milisegundos : "
				+ fecha.getTimeInMillis());

		// 3. Obtiene la fecha actual utilizando zona horaria
		System.out.println("Fecha actual con zona horaria : "
				+ fecha.getTimeZone());

		// 4. Obtiene la fecha personalizada con el metodo format de String
		String fechaPersonalizada = String.format("%1$tY-%1$tm-%1$td",
				fecha.getTime());
		System.out.println("Fecha personalizada : " + fechaPersonalizada);

		// 5. Obtiene la Fecha personalizada con nombres en espaniol
		// Arreglo con los nombres de los meses del anio
		String[] mes = { "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio",
				"Julio", "Agosto", "Septiembre", "Octubre", "Noviembre",
				"Diciembre" };
		// Arreglo con los nombres de los dias de la semana
		String[] diaSemana = { "Domingo", "Lunes", "Martes", "Miercoles",
				"Jueves", "Viernes", "Sabado" };
		// Formato de salida de la fecha
		fechaPersonalizada = "Hoy es "
				+ diaSemana[fecha.get(Calendar.DAY_OF_WEEK) - 1] + " "
				+ fecha.get(Calendar.DATE) + " de "
				+ mes[fecha.get(Calendar.MONTH)] + " del anio "
				+ fecha.get(Calendar.YEAR);
		System.out.println("Fecha personalizada : " + fechaPersonalizada);

		// 6. Hora actual utilizando el metodo format de String
		fechaPersonalizada = String.format("%1$tT", fecha.getTime());
		System.out.println("Hora actual : " + fechaPersonalizada);
	}
}

Salida

[ Imprimiendo fechas ]

Fecha actual : Sun Oct 16 20:02:20 CEST 2011
Fecha actual en milisegundos : 1318788140406
Fecha actual con zona horaria : sun.util.calendar.ZoneInfo[id="Europe/Paris",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=Europe/Paris,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]]
Fecha personalizada : 2011-10-16
Fecha personalizada : Hoy es Domingo 16 de Octubre del anio 2011
Hora actual : 20:02:20