tl; dr
LocalDate.of( 2014 , 2 , 11 )
Si insiste en usar la terrible java.util.Dateclase antigua , convierta de las clases modernas java.time .
java.util.Date
.from(
LocalDate
.of( 2014 , 2 , 11 )
.atStartOfDay(
ZoneId.of( "Africa/Tunis" )
)
.toInstant()
)
Detalles
Si quiere "fácil", debería utilizar el nuevo paquete java.time en Java 8 en lugar de las notoriamente problemáticas clases java.util.Date y .Calendar incluidas con Java.
java.time
El java.time marco integrado en Java 8 y posteriores suplanta las problemáticas clases antiguas java.util.Date/.Calendar.
Solo fecha

LocalDateJava.time ofrece una clase para representar un valor de solo fecha sin ninguna hora del día ni zona horaria. Necesita una zona horaria para determinar una fecha, ya que un nuevo día amanece antes en París que en Montreal, por ejemplo. La ZoneIdclase es para zonas horarias.
ZoneId zoneId = ZoneId.of( "Asia/Singapore" );
LocalDate today = LocalDate.now( zoneId );
Volcado a la consola:
System.out.println ( "today: " + today + " in zone: " + zoneId );
hoy: 2015-11-26 en zona: Asia / Singapur
O utilice un método de fábrica para especificar el año, mes, día.
LocalDate localDate = LocalDate.of( 2014 , Month.FEBRUARY , 11 );
localDate: 2014-02-11
O pase un número de mes del 1 al 12 en lugar de un DayOfWeekobjeto de enumeración.
LocalDate localDate = LocalDate.of( 2014 , 2 , 11 );
Zona horaria

A LocalDateno tiene un significado real hasta que lo ajusta a una zona horaria. En java.time, aplicamos una zona horaria para generar un ZonedDateTimeobjeto. Eso también significa una hora del día, pero ¿a qué hora? Por lo general, tiene sentido ir con el primer momento del día. Puede pensar que eso significa la hora 00:00:00.000, pero no siempre es cierto debido al horario de verano (DST) y quizás a otras anomalías. En lugar de asumir ese momento, le pedimos a java.time que determine el primer momento del día llamando atStartOfDay.
Especificar un nombre de zona horaria correcta en el formato de continent/region, por ejemplo America/Montreal, Africa/Casablancao Pacific/Auckland. Nunca use la abreviatura de 3-4 letras como ESTo ISTya que no son zonas horarias verdaderas, no están estandarizadas y ni siquiera son únicas (!).
ZoneId zoneId = ZoneId.of( "Asia/Singapore" );
ZonedDateTime zdt = localDate.atStartOfDay( zoneId );
zdt: 2014-02-11T00: 00 + 08: 00 [Asia / Singapur]
UTC

Para el trabajo de back-end (lógica comercial, base de datos, almacenamiento e intercambio de datos) usualmente usamos la zona horaria UTC . En java.time, la Instantclase representa un momento en la línea de tiempo en UTC. Un objeto Instant se puede extraer de un ZonedDateTime llamando toInstant.
Instant instant = zdt.toInstant();
instantáneo: 2014-02-10T16: 00: 00Z
Convertir
Debes evitar usar java.util.Dateclass por completo. Pero si debe interoperar con un código antiguo que aún no se ha actualizado para java.time , puede convertir de un lado a otro. Busque nuevos métodos de conversión agregados a las clases antiguas.
java.util.Date d = java.util.from( instant ) ;
…y…
Instant instant = d.toInstant() ;

Acerca de java.time
El marco java.time está integrado en Java 8 y versiones posteriores. Estas clases suplantar la vieja problemáticos heredados clases de fecha y hora como java.util.Date, Calendar, y SimpleDateFormat.
Para obtener más información, consulte el tutorial de Oracle . Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310 .
El proyecto Joda-Time , ahora en modo de mantenimiento , aconseja la migración a java.time clases .
Puede intercambiar objetos java.time directamente con su base de datos. Utilice un controlador JDBC compatible con JDBC 4.2 o posterior. No se necesitan cuerdas, no se necesitan java.sql.*clases. Hibernate 5 y JPA 2.2 admiten java.time .
¿Dónde obtener las clases java.time?
ACTUALIZACIÓN: La biblioteca Joda-Time ahora está en modo de mantenimiento y aconseja la migración a las clases java.time . Dejo esta sección para la historia.
Joda-Time
Por un lado, Joda-Time usa una numeración sensata, por lo que febrero 2no lo es 1. Otra cosa, Joda-Time DateTime realmente conoce su zona horaria asignada a diferencia de un java.util.Date que parece tener una zona horaria pero no la tiene.
Y no olvide la zona horaria. De lo contrario, obtendrá el valor predeterminado de JVM.
DateTimeZone timeZone = DateTimeZone.forID( "Asia/Singapore" );
DateTime dateTimeSingapore = new DateTime( 2014, 2, 11, 0, 0, timeZone );
DateTime dateTimeUtc = dateTimeSingapore.withZone( DateTimeZone.UTC );
java.util.Locale locale = new java.util.Locale( "ms", "SG" );
String output = DateTimeFormat.forStyle( "FF" ).withLocale( locale ).print( dateTimeSingapore );
Volcar a la consola…
System.out.println( "dateTimeSingapore: " + dateTimeSingapore );
System.out.println( "dateTimeUtc: " + dateTimeUtc );
System.out.println( "output: " + output );
Cuando se ejecuta ...
dateTimeSingapore: 2014-02-11T00:00:00.000+08:00
dateTimeUtc: 2014-02-10T16:00:00.000Z
output: Selasa, 2014 Februari 11 00:00:00 SGT
Conversión
Si necesita convertir a java.util.Date para usar con otras clases ...
java.util.Date date = dateTimeSingapore.toDate();