tiempo studio sistema servidor poner obtener mostrar hora fecha actual java datetime

studio - obtener tiempo actual java



Cómo obtener la fecha/hora actual en Java (24)

¿Cuál es la mejor manera de obtener la fecha / hora actual en Java?


La nueva API de Data-Time se presenta a principios de Java 8. Esto se debe a los siguientes problemas causados ​​en la antigua API de data-time.

Es difícil manejar la zona horaria: es necesario escribir gran cantidad de código para tratar las zonas horarias.

No seguro para subprocesos: java.util.Date no es seguro para subprocesos.

Así que eche un vistazo alrededor con Java 8

import java.time.LocalDate; import java.time.LocalTime; import java.time.LocalDateTime; import java.time.Month; public class DataTimeChecker { public static void main(String args[]) { DataTimeChecker dateTimeChecker = new DataTimeChecker(); dateTimeChecker.DateTime(); } public void DateTime() { // Get the current date and time LocalDateTime currentTime = LocalDateTime.now(); System.out.println("Current DateTime: " + currentTime); LocalDate date1 = currentTime.toLocalDate(); System.out.println("Date : " + date1); Month month = currentTime.getMonth(); int day = currentTime.getDayOfMonth(); int seconds = currentTime.getSecond(); System.out.println("Month : " + month); System.out.println("Day : " + day); System.out.println("Seconds : " + seconds); LocalDateTime date2 = currentTime.withDayOfMonth(17).withYear(2018); System.out.println("Date : " + date2); //Prints 17 May 2018 LocalDate date3 = LocalDate.of(2018, Month.MAY, 17); System.out.println("Date : " + date3); //Prints 04 hour 45 minutes LocalTime date4 = LocalTime.of(4, 45); System.out.println("Date : " + date4); // Convert to a String LocalTime date5 = LocalTime.parse("20:15:30"); System.out.println("Date : " + date5); } }

Salida de la codificación anterior:

Current DateTime: 2018-05-17T04:40:34.603 Date : 2018-05-17 Month : MAY Day : 17 Seconds : 34 Date : 2018-05-17T04:40:34.603 Date : 2018-05-17 Date : 04:45 Date : 20:15:30


tl; dr

Instant.now() // Capture the current moment in UTC, with a resolution of nanoseconds.

... o ...

ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) // Capture the current moment as seen in the wall-clock time used by the people of a particular region (a time zone).

java.time

Algunas de las respuestas mencionan que java.time clases de java.time son el reemplazo moderno de las antiguas y problemáticas clases de fecha y hora que se incluyen con las primeras versiones de Java. A continuación hay un poco más de información.

Zona horaria

Las otras Respuestas no explican cómo una zona horaria es crucial para determinar la fecha y hora actuales. Para un momento dado, la fecha y la hora varían alrededor del globo por zona. Por ejemplo, unos pocos minutos después de la medianoche es un nuevo día en París, Francia, que sigue siendo "ayer" en Montreal, Quebec .

Instant

Gran parte de la lógica de su negocio y el almacenamiento / intercambio de datos deben realizarse en UTC , como una buena práctica. Para obtener el momento actual en UTC con una resolución en nanoseconds , use la clase Instant .

Instant instant = Instant.now();

ZonedDateTime

Puede ajustar ese Instant en otras zonas horarias. Aplicar un objeto ZoneId para obtener un ZonedDateTime .

ZoneId z = ZoneId.of( "America/Montreal" ); ZonedDateTime zdt = instant.atZone( z );

Podemos omitir el Instant y obtener el ZonedDateTime actual directamente.

ZonedDateTime zdt = ZonedDateTime.now( z );

Siempre pase ese argumento de zona horaria opcional. Si se omite, se aplica la zona horaria predeterminada actual de su JVM. El valor predeterminado puede cambiar en cualquier momento, incluso durante el tiempo de ejecución. No someta su aplicación a una externalidad fuera de su control. Siempre especifique la zona horaria deseada / esperada.

ZonedDateTime do_Not_Do_This = ZonedDateTime.now(); // BAD - Never rely implicitly on the current default time zone.

Más tarde, puede extraer un Instant de ZonedDateTime .

Instant instant = zdt.toInstant();

Siempre use un Instant o ZonedDateTime lugar de un LocalDateTime cuando desee un momento real en la línea de tiempo. Los tipos Local… propósito no tienen un concepto de zona horaria, por lo que representan solo una idea aproximada de un posible momento. Para obtener un momento real, debe asignar una zona horaria para transformar los tipos Local… en ZonedDateTime y, por lo tanto, hacer que sea significativo.

LocalDate

La clase LocalDate representa un valor de solo fecha sin hora del día y sin zona horaria.

ZoneId z = ZoneId.of( "America/Montreal" ); LocalDate today = LocalDate.now( z ); // Always pass a time zone.

Instrumentos de cuerda

Para generar una cadena que represente el valor de fecha y hora, simplemente llame a toString en las clases java.time para los formatos estándar ISO 8601 .

String output = myLocalDate.toString(); // 2016-09-23

... o ...

String output = zdt.toString(); // 2016-09-23T12:34:56.789+03:00[America/Montreal]

La clase ZonedDateTime extiende el formato estándar al ZonedDateTime sabiamente el nombre de la zona horaria entre corchetes.

Para otros formatos, busque Desbordamiento de pila para muchas preguntas y respuestas en la clase DateTimeFormatter .

Evite LocalDateTime

Contrariamente al comentario sobre la Pregunta de RamanSB, no debe usar la clase LocalDateTime para la fecha y hora actual.

El LocalDateTime carece deliberadamente de cualquier zona horaria o información de desplazamiento de UTC. Por lo tanto, esto no es apropiado cuando está siguiendo un momento específico en la línea de tiempo. Ciertamente no es apropiado para capturar el momento actual.

La redacción "Local" es contraintuitiva. Significa cualquier localidad en lugar de cualquier localidad específica. Por ejemplo, la Navidad este año comienza a la medianoche del 25 de diciembre: 2017-12-25T00:00:00 , para ser representada como LocalDateTime . Pero esto significa la medianoche en varios puntos del mundo en diferentes momentos. La medianoche ocurre primero en Kiribati , más tarde en Nueva Zelanda, horas más tarde en la India, y así sucesivamente, y pasan varias horas más antes de que comience la Navidad en Francia, cuando los niños de Canadá todavía esperan ese día. Cada uno de estos puntos de inicio de Navidad se representaría como una ZonedDateTime separado.

Desde fuera de tu sistema

Si no puede confiar en el reloj de su sistema, vea Java: Obtenga la fecha y la hora actuales del servidor, no el reloj del sistema y mi respuesta .

java.time.Clock

Para aprovechar un proveedor alternativo del momento actual, escriba una subclase de la clase java.time.Clock abstracta.

Puede pasar su implementación de Clock como un argumento a los diversos métodos java.time . Por ejemplo, Instant.now( clock ) .

Instant instant = Instant.now( yourClockGoesHere ) ;

Para propósitos de prueba, tenga en cuenta las implementaciones alternativas de Clock disponibles estáticamente desde el mismo Clock : LocalDateTime , offset , tick y más.

Acerca de java.time

El marco java.time está integrado en Java 8 y java.time posteriores. Estas clases sustituyen a las antiguas y problemáticas clases de fecha y hora como java.util.Date , java.util.Calendar y SimpleDateFormat .

El proyecto Joda-time , ahora en modo de mantenimiento , aconseja la migración a las clases java.time .

Para obtener más información, consulte el Tutorial de Oracle . Y busca para muchos ejemplos y explicaciones. La especificación es JSR 310 .

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 cadenas, no se necesitan clases java.sql.* .

¿Dónde obtener las clases java.time?

  • Java SE 8 , Java SE 9 y posteriores
    • Incorporado.
    • Parte de la API de Java estándar con una implementación en paquete.
    • Java 9 agrega algunas características menores y correcciones.
  • Java SE 6 y Java SE 7
    • Gran parte de la funcionalidad de java.time está respaldada a Java 6 y 7 en ThreeTen-Backport .
  • Android
    • Versiones posteriores de las implementaciones de paquetes de Android de las clases java.time.
    • Para Android anterior, el proyecto ThreeTenABP adapta ThreeTen-Backport (mencionado anteriormente). Vea Cómo usar ThreeTenABP… .

El proyecto ThreeTen-Extra extiende java.time con clases adicionales. Este proyecto es un terreno de prueba para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí como Interval , YearWeek , YearQuarter , y more .


¿Has mirado java.util.Fecha? Es exactamente lo que quieres.


Como se mencionó, la fecha básica () puede hacer lo que necesita en términos de obtener la hora actual. En mi experiencia reciente que trabaja mucho con fechas Java, hay muchas rarezas con las clases incorporadas (así como la desaprobación de muchos de los métodos de la clase Fecha). Una de las rarezas que me llamó la atención fue que los meses están basados ​​en un índice 0, lo que desde un punto de vista técnico tiene sentido, pero en términos reales puede ser muy confuso.

Si solo le preocupa la fecha actual que debería ser suficiente, sin embargo, si tiene la intención de realizar muchas manipulaciones / cálculos con fechas, podría ser muy beneficioso utilizar una biblioteca de terceros (existen muchos porque muchos desarrolladores de Java no están satisfechos con la funcionalidad incorporada).

Respaldo la recomendación de Stephen C, ya que creo que Joda-time es muy útil para simplificar mi trabajo con fechas, también está muy bien documentado y puede encontrar muchos ejemplos útiles en toda la web. Incluso terminé escribiendo una clase de envoltura estática (como DateUtils) que utilizo para consolidar y simplificar toda mi manipulación común de fechas.


Crear objeto de fecha y simplemente imprimirlo.

Date d = new Date(System.currentTimeMillis()); System.out.print(d);


Depende de la forma de fecha / hora que desee:

  • Si desea la fecha / hora como un único valor numérico, entonces System.currentTimeMillis() le da eso, expresado como el número de milisegundos después de la época de UNIX (como un Java). Este valor es un delta de un punto de tiempo UTC, y es independiente de la zona horaria local ... suponiendo que el reloj del sistema se haya configurado correctamente.

  • Si desea la fecha / hora en un formulario que le permita acceder a los componentes (año, mes, etc.) numéricamente, puede usar uno de los siguientes:

    • new Date() le da un objeto Date inicializado con la fecha / hora actual. El problema es que los métodos de la API de Date son en su mayoría defectuosos ... y en desuso.

    • Calendar.getInstance() te da un objeto de Calendar inicializado con la fecha / hora actual, usando la configuración Locale y la zona horaria predeterminadas. Otras sobrecargas le permiten usar un Locale y / o TimeZone específico. El calendario funciona ... pero las API siguen siendo incómodas.

    • new org.joda.time.DateTime() le da un objeto Joda-time inicializado con la fecha / hora actual, usando la zona horaria y la cronología predeterminadas. Hay muchas otras alternativas de Joda ... demasiadas para describirlas aquí. (Pero tenga en cuenta que algunas personas informan que el tiempo de Joda tiene problemas de rendimiento; por ejemplo, LocalDateTime de Jodatime es lento cuando se usa por primera vez ).

    • en Java 8, llamar a LocalDateTime.now() y ZonedDateTime.now() le dará representaciones 1 para la fecha / hora actual.

Antes de Java 8, la mayoría de las personas que saben sobre estas cosas recomendaron que Joda-time tuviera (por mucho) las mejores API de Java para hacer cosas que involucran cálculos de tiempo y duración. Con Java 8, esto ya no es cierto. Sin embargo, si ya está utilizando el tiempo de Joda en su base de código, no hay ninguna razón sólida para migrar.

1 - Tenga en cuenta que LocalDateTime no incluye una zona horaria. Como dice el javadoc: "No puede representar un instante en la línea de tiempo sin información adicional, como un desplazamiento o una zona horaria".

2 - Su código no se romperá si no lo hace, y no recibirá advertencias de desaprobación. Claro, el código base de Joda probablemente dejará de recibir actualizaciones, pero es poco probable que las necesite. Sin actualizaciones significa estabilidad y eso es algo bueno .


Echa un vistazo a la clase Date . También está la nueva clase de Calendar , que es el método preferido para realizar muchas operaciones de fecha / hora (muchos de los métodos en Fecha han quedado en desuso).

Si solo desea la fecha actual, cree un nuevo objeto Fecha o llame a Calendar.getInstance(); .


En Java 8 es:

LocalDateTime.now()

y en caso de que necesite información de zona horaria:

ZonedDateTime.now()

y en caso de que desee imprimir una cadena formateada de fantasía:

System.out.println(ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME))



Me parece que esta es la mejor manera:

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Calendar cal = Calendar.getInstance(); System.out.println(dateFormat.format(cal.getTime())); // 2014/08/06 16:00:22


Para java.util.Date, solo crea una nueva fecha ()

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date date = new Date(); System.out.println(dateFormat.format(date)); //2016/11/16 12:08:43

Para java.util.Calendar, usa Calendar.getInstance ()

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Calendar cal = Calendar.getInstance(); System.out.println(dateFormat.format(cal)); //2016/11/16 12:08:43

Para java.time.LocalDateTime, usa LocalDateTime.now ()

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"); LocalDateTime now = LocalDateTime.now(); System.out.println(dtf.format(now)); //2016/11/16 12:08:43

Para java.time.LocalDate, usa LocalDate.now ()

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd"); LocalDate localDate = LocalDate.now(); System.out.println(dtf.format(localDate)); //2016/11/16

Referencia: https://www.mkyong.com/java/java-how-to-get-current-date-time-date-and-calender/


Puedes usar el objeto Date y el formato por ti mismo. Es difícil de formatear y necesita más códigos, como ejemplo,

Date dateInstance = new Date(); int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900. int date = dateInstance.getDate(); int month = dateInstance.getMonth(); int day = dateInstance.getDay(); int hours = dateInstance.getHours(); int min = dateInstance.getMinutes(); int sec = dateInstance.getSeconds(); String dayOfWeek = ""; switch(day){ case 0: dayOfWeek = "Sunday"; break; case 1: dayOfWeek = "Monday"; break; case 2: dayOfWeek = "Tuesday"; break; case 3: dayOfWeek = "Wednesday"; break; case 4: dayOfWeek = "Thursday"; break; case 5: dayOfWeek = "Friday"; break; case 6: dayOfWeek = "Saturday"; break; } System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek); System.out.println("Time: " + hours +":"+ min + ":" + sec);

salida:

Date: 2017-6-23 Sunday Time: 14:6:20

Como puede ver, esta es la peor manera de hacerlo y, según la documentación de Oracle, está en deprecated .

Documento de Oracle:

La clase Fecha representa un instante específico en el tiempo, con una precisión de milisegundos.

Antes de JDK 1.1, la clase Fecha tenía dos funciones adicionales. Permitió la interpretación de fechas como año, mes, día, hora, minuto y segundo valores. También permitió el formateo y análisis de cadenas de fecha. Desafortunadamente, la API para estas funciones no era susceptible de internacionalización. A partir de JDK 1.1, la clase Calendario debe usarse para convertir entre fechas y campos de hora y la clase DateFormat debe usarse para formatear y analizar cadenas de fecha. Los métodos correspondientes en la fecha están en desuso.

Así que, alternativamente, puedes usar la clase Calendar ,

Calendar.YEAR; //and lot more

Para obtener la hora actual, puede utilizar:

Calendar rightNow = Calendar.getInstance();

Doc:

Al igual que otras clases sensibles a la configuración regional, Calendar proporciona un método de clase, getInstance , para obtener un objeto generalmente útil de este tipo. El método getInstance del calendario devuelve un objeto de calendario cuyos campos de calendario se han inicializado con la fecha y hora actuales

Debajo del código para obtener solo la fecha

Date rightNow = Calendar.getInstance().getTime(); System.out.println(rightNow);

Además, las clases de Calendar tienen subclases. GregorianCalendar es uno de ellos y una subclase concreta de Calendar y proporciona el sistema de calendario estándar utilizado por la mayoría del mundo.

Ejemplo usando GregorianCalendar :

Calendar cal = new GregorianCalendar(); int hours = cal.get(Calendar.HOUR); int minute = cal.get(Calendar.MINUTE); int second = cal.get(Calendar.SECOND); int ap = cal.get(Calendar.AM_PM); String amVSpm; if(ap == 0){ amVSpm = "AM"; }else{ amVSpm = "PM"; } String timer = hours + "-" + minute + "-" + second + " " +amVSpm; System.out.println(timer);

Puede usar SimpleDateFormat , una forma simple y rápida de formatear la fecha:

String pattern = "yyyy-MM-dd"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); String date = simpleDateFormat.format(new Date()); System.out.println(date);

Lea este tutorial de Jakob Jenkov: Java SimpleDateFormat .

Como otros lo mencionaron, cuando necesitamos realizar manipulaciones a partir de fechas, no teníamos una forma simple y mejor o no podíamos satisfacer las clases y API integradas.

Como ejemplo, cuando necesitamos diferenciarnos entre dos fechas , cuando necesitamos comparar dos fechas (también hay un método incorporado para esto) y muchos más. Tuvimos que utilizar bibliotecas de terceros. Uno de los buenos y populares es Joda-time

Lea también:

. Lo más feliz es ahora (en java 8), nadie necesita descargar y usar bibliotecas por ningún motivo. Un ejemplo simple para obtener la fecha y hora actual en Java 8,

LocalTime localTime = LocalTime.now(); System.out.println(localTime); //with time zone LocalTime localTimeWtZone = LocalTime.now(ZoneId.of("GMT+02:30")); System.out.println(localTimeWtZone);

Una de las buenas publicaciones del blog para leer sobre Java 8 date .

Y recuerde que para obtener más información sobre la fecha y hora de Java, hay muchas más formas y / o formas útiles que puede obtener / usar.

EDITAR:

Según el comentario de @BasilBourque, las antiguas y problemáticas clases de fecha y hora como java.util.Date , java.util.Calendar y java.text.SimpleTextFormat ahora son legacy , suplantadas por las java.time .


Seguiré adelante y le daré esta respuesta porque es todo lo que necesitaba cuando tenía la misma pregunta:

Date currentDate = new Date(System.currentTimeMillis());

currentDateAhora es su fecha actual en un Dateobjeto Java .


Si quieres la fecha actual como String, prueba esto:

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date date = new Date(); System.out.println(dateFormat.format(date));

o

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Calendar cal = Calendar.getInstance(); System.out.println(dateFormat.format(cal.getTime()));

http://www.mkyong.com/java/java-how-to-get-current-date-time-date-and-calender/


Si solo necesita mostrar una marca de tiempo en formato YYYY.MM.DD-HH.MM.SS (caso muy frecuente), esta es la forma de hacerlo:

String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());


Similar a las soluciones anteriores. Pero siempre me encuentro buscando este fragmento de código:

Date date=Calendar.getInstance().getTime(); System.out.println(date);


Solo crea un objeto Date ...

Date date = new Date();


Utilizar:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy:MM:dd::HH:mm:ss"); System.out.println(sdf.format(System.currentTimeMillis()));

La declaración de impresión imprimirá la hora en que se llama y no cuando se creó el SimpleDateFormat . Por lo tanto, se puede llamar repetidamente sin crear ningún objeto nuevo.


Utilizar:

String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()); System.out.println(timeStamp );

(Esta funcionando.)


Entender la clase java.util.Date

1.1 Como obtener la fecha actual

import java.util.Date; class Demostration{ public static void main(String[]args){ Date date = new Date(); // date object System.out.println(date); // Try to print the date object } }

1.2 Cómo usar el método getTime ()

import java.util.Date; public class Main { public static void main(String[]args){ Date date = new Date(); long timeInMilliSeconds = date.getTime(); System.out.println(timeInMilliSeconds); } }

Esto devolverá la cantidad de milisegundos desde el 1 de enero de 1970 a las 00:00:00 GMT para fines de comparación de tiempo.

1.3 Cómo formatear el tiempo usando la clase SimpleDateFormat

import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; class Demostration{ public static void main(String[]args){ Date date=new Date(); DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd"); String formattedDate=dateFormat.format(date); System.out.println(formattedDate); } }

También intente usar diferentes patrones de formato como "aaaa-MM-dd hh: mm: ss" y seleccione el patrón deseado. http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

Comprender la clase java.util.Calendar.

2.1 Uso de la clase de calendario para obtener la marca de tiempo actual

import java.util.Calendar; class Demostration{ public static void main(String[]args){ Calendar calendar=Calendar.getInstance(); System.out.println(calendar.getTime()); } }

2.2 Intente usar setTime y otros métodos establecidos para configurar el calendario en una fecha diferente.

Fuente: http://javau91.blogspot.com/


// 2015/09/27 15:07:53 System.out.println( new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime()) ); // 15:07:53 System.out.println( new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()) ); // 09/28/2015 System.out.println(new SimpleDateFormat("MM/dd/yyyy").format(Calendar.getInstance().getTime())); // 20150928_161823 System.out.println( new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()) ); // Mon Sep 28 16:24:28 CEST 2015 System.out.println( Calendar.getInstance().getTime() ); // Mon Sep 28 16:24:51 CEST 2015 System.out.println( new Date(System.currentTimeMillis()) ); // Mon Sep 28 System.out.println( new Date().toString().substring(0, 10) ); // 2015-09-28 System.out.println( new java.sql.Date(System.currentTimeMillis()) ); // 14:32:26 Date d = new Date(); System.out.println( (d.getTime() / 1000 / 60 / 60) % 24 + ":" + (d.getTime() / 1000 / 60) % 60 + ":" + (d.getTime() / 1000) % 60 ); // 2015-09-28 17:12:35.584 System.out.println( new Timestamp(System.currentTimeMillis()) ); // Java 8 // 2015-09-28T16:16:23.308+02:00[Europe/Belgrade] System.out.println( ZonedDateTime.now() ); // Mon, 28 Sep 2015 16:16:23 +0200 System.out.println( ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME) ); // 2015-09-28 System.out.println( LocalDate.now(ZoneId.of("Europe/Paris")) ); // rest zones id in ZoneId class // 16 System.out.println( LocalTime.now().getHour() ); // 2015-09-28T16:16:23.315 System.out.println( LocalDateTime.now() );


System.out.println( new SimpleDateFormat("yyyy:MM:dd - hh:mm:ss a").format(Calendar.getInstance().getTime()) ); //2018:02:10 - 05:04:20 PM

fecha / hora con AM / PM


import java.util.*; import java.text.*; public class DateDemo { public static void main(String args[]) { Date dNow = new Date( ); SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd ''at'' hh:mm:ss a zzz"); System.out.println("Current Date: " + ft.format(dNow)); } }

Puede utilizar la fecha para los datos actuales de fet. así que utilizando SimpleDateFormat obtener formato


java.util.Date date = new java.util.Date();

Se rellena automáticamente con el momento en que se crea una instancia.