¿Cómo obtengo la fecha actual en Java?Equivalente al DateTime.Now de C# en Java?
En C# es DateTime.Now
.
¿Cómo obtengo la fecha actual en Java?Equivalente al DateTime.Now de C# en Java?
En C# es DateTime.Now
.
Simplemente construya un nuevo objeto Date
sin ningún argumento; esto asignará la fecha y hora actual al nuevo objeto.
import java.util.Date;
Date d = new Date();
En palabras de the Javadocs para the zero-argument constructor:
asigna un objeto Date y inicializa de forma que representa la hora a la que se le asignó, medida a la milésima de segundo más cercano.
Asegúrese de que está utilizando y no java.util.Date
java.sql.Date
- este último no tiene un constructor cero-arg, y tiene un tanto diferentes semánticas que son el tema de una conversación totalmente diferente. :)
También tenga en cuenta que GregorianCalendar y muchos objetos similares funcionan de la misma manera. Entonces, sea cual sea el tipo de objeto de fecha/calendario con el que esté trabajando, el constructor de argumento cero generalmente inicializa el objeto a la fecha/hora actual. –
Desde fecha doc: a partir de JDK 1.1, la clase Calendario se debe usar para convertir entre campos de fecha y hora y la clase DateFormat se debe usar para formatear y analizar cadenas de fecha. –
Considere las nuevas API de Java8 - [LocalDateTime.now() y ZonedDateTime.now()] (http://stackoverflow.com/a/26225884/513342) –
Si crea un nuevo objeto Date, por defecto se establecerá en el momento actual:
import java.util.Date;
Date now = new Date();
Yo prefiero usar el objeto Calendar.
Calendar now = GregorianCalendar.getInstance()
Me resulta mucho más fácil trabajar con. También puede obtener un objeto Date del Calendario. se consideran
http://java.sun.com/javase/6/docs/api/java/util/GregorianCalendar.html
O puede ser simplemente 'Calendar.getInstance()' – draw
El Java Date y Calendar clases por muchos como mal diseñados. Debería echarle un vistazo al Joda Time, una biblioteca comúnmente utilizada en lugar de las bibliotecas de fechas incorporadas de Java.
El equivalente de DateTime.Now
en Joda El tiempo es:
DateTime dt = new DateTime();
actualización
Como se señaló en los comentarios, las últimas versiones de Joda Time tienen un DateTime.now()
método, por lo que:
DateTime dt = DateTime.now();
La versión actual (2.1) de Joda parece tener un método estático DateTime.now() (acepta opcionalmente DateTimeZone o Chronology). http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html#now%28%29 –
Tenga en cuenta que esta respuesta se publicó en 2010. Java 8 ha absorbido muchas de las mejores características de Joda Time. Consulte la [documentación oficial] (https://docs.oracle.com/javase/tutorial/datetime/index.html) y muchos otros artículos en línea para obtener más información. – DavidS
java.lang.System.currentTimeMillis();
devolverá la fecha y hora desde la época
Bueno para el registro, pero requiere un análisis y conversión para mostrar al usuario –
import org.joda.time.DateTime;
DateTime now = DateTime.now();
En Java 8 es:
ZonedDateTime dateTime = ZonedDateTime.now();
Instant.now()
La clase java.util.Date ha quedado obsoleta en el nuevo java.time package (Tutorial) en Java 8 y posterior. Las antiguas clases de java.util.Date/.Calendar son notoriamente problemáticas, confusas y defectuosas. Evítales.
ZonedDateTime
Consigue el momento actual en java.time.
ZonedDateTime now = ZonedDateTime.now();
Un ZonedDateTime
encapsula:
Si no se especifica la zona horaria, la zona horaria predeterminada actual de su JVM se asigna en silencio. Es mejor especificar su zona horaria deseada/esperada que confiar implícitamente en el valor predeterminado.
ZoneId z = ZoneId.of("Pacific/Auckland");
ZonedDateTime zdt = ZonedDateTime.now(z);
Generalmente mejor conseguir en el hábito de hacer su trabajo de back-end (lógica de negocios, base de datos, el almacenamiento, el intercambio de datos), todo en UTC zona horaria. El código anterior se basa implícitamente en la zona horaria predeterminada actual de la JVM.
La clase Instant
representa un momento en la línea de tiempo en UTC con una resolución de nanosegundos.
Instant instant = Instant.now();
La clase Instant
es una clase de bloques de construcción básica en java.time y se pueden utilizar a menudo en su código.
Cuando necesite más flexibilidad en el formateo, transfórmelo en un OffsetDateTime
. Especifique un objeto ZoneOffset
. Para UTC, use el práctico constant for UTC.
OffsetDateTime odt = instant.atOffset(ZoneOffset.UTC);
ajustar fácilmente a otra zona horaria para su presentación al usuario. Utilice proper time zone name, nunca los códigos de 3-4 letras como EST
o IST
.
ZoneId z = ZoneId.of("America/Montreal");
ZonedDateTime nowMontreal = instant.atZone(z);
Genera una representación de cadena de ese valor de fecha y hora, localizado.
String output = DateTimeFormatter
.ofLocalizedDate(FormatStyle.FULL)
.withLocale(Locale.CANADA_FRENCH)
.format (nowMontreal);
Instant
O, para permanecer en UTC, utilice Instant
. Un objeto Instant
representa un momento en la línea de tiempo, a una resolución de nanosegundos, siempre en UTC. Esto proporciona el elemento básico para una fecha-hora zonal, junto con una asignación de zona horaria.Usted puede pensar que es conceptualmente esta manera:
se puede extraer un Instant
de un ZonedDateTime
.
Instant instantNow = zdt.toInstant();
Puede comenzar con un Instante. No es necesario especificar un huso horario aquí, ya que Instant
siempre está en UTC.
Instant now = Instant.now();
También publiqué [otra respuesta] (http://stackoverflow.com/a/39379431/642706) con más detalles sobre una pregunta duplicada. –
Java siempre tiene soporte inadecuado para los casos de uso de fecha y hora. Por ejemplo, las clases existentes (como java.util.Date
y SimpleDateFormatter
) no son seguras para subprocesos, lo que puede generar problemas de simultaneidad. También hay ciertos defectos en API. Por ejemplo, los años en java.util.Date
comienzan a las 1900, los meses comienzan en 1 y los días comienzan en 0, lo que no es muy intuitivo. Estos problemas llevaron a la popularidad de las bibliotecas de fecha y hora de terceros, como Joda-Time
. Para hacer frente a una nueva fecha y hora de la API está diseñada para Java SE 8.
LocalDateTime timePoint = LocalDateTime.now();
System.out.println(timePoint);
Según doc:
now()
El método devuelve la fecha actual en tiempo usando el sistema reloj y el tiempo predeterminado -zone, no nulo. Obtiene la fecha actual desde el reloj del sistema en la zona horaria predeterminada. Esto hará que consulte el reloj del sistema en la zona horaria predeterminada para obtener la fecha y hora actual . El uso de este método evitará la posibilidad de utilizar un reloj alternativo para la prueba porque el reloj está codificado.
Esta pregunta es anterior a [esta pregunta] (http://stackoverflow.com/q/5175728/642706) anteriormente marcó como un duplicado. Así que invierte la designación, volviendo a abrir esta pregunta y marcando la nueva como duplicada. –
El título en el "duplicado" es más claro, y se encuentra más fácilmente a través de la Búsqueda de Google – ragerdl