now - java util date get current date
Equivalente de DateTime.Now de C#en Java? (10)
¿Cómo obtengo la fecha actual en Java?
En C # es DateTime.Now
.
tl; dr
Instant.now()
java.time
La nueva clase java.util.Date ha sido superada por el nuevo paquete java.time ( Tutorial ) en Java 8 y versiones posteriores. Las antiguas clases java.util.Date/.Calendar son notoriamente problemáticas, confusas y defectuosas. Evítales.
ZonedDateTime
Obtén el momento actual en java.time.
ZonedDateTime now = ZonedDateTime.now();
Un ZonedDateTime
encapsula:
- Fecha.
- Hora del día, con una fracción de segundo a resolución de nanosecond .
- Zona horaria.
Si no se especifica una zona horaria, la zona horaria predeterminada actual de su JVM se asigna de forma silenciosa. Es mejor especificar la zona horaria deseada / esperada que depender implícitamente del valor predeterminado.
ZoneId z = ZoneId.of( "Pacific/Auckland" );
ZonedDateTime zdt = ZonedDateTime.now( z );
UTC
En general, es mejor adquirir el hábito de hacer su trabajo de back-end (lógica de negocios, base de datos, almacenamiento, intercambio de datos), todo en la zona horaria UTC . 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 bloque de construcción básica en java.time y se puede usar a menudo en su código.
Cuando necesite más flexibilidad para formatear, transforme en un OffsetDateTime
. Especifique un objeto ZoneOffset
. Para UTC use la constante práctica para UTC .
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC );
Zona horaria
Usted se ajusta fácilmente a otra zona horaria para la presentación al usuario. Use un nombre de zona horaria adecuado , nunca los códigos de 3 a 4 letras, como EST
o IST
.
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime nowMontreal = instant.atZone( z );
Genere una representación de cadena de ese valor de fecha y hora, localizada.
String output = DateTimeFormatter
.ofLocalizedDate( FormatStyle.FULL )
.withLocale( Locale.CANADA_FRENCH )
.format ( nowMontreal );
Instant
O, para permanecer en UTC, use 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 bloque de construcción para una fecha y hora zonificada, junto con una asignación de zona horaria. Puedes pensarlo conceptualmente de esta manera:
Puede extraer un Instant
de un ZonedDateTime
.
Instant instantNow = zdt.toInstant();
Puedes empezar con un instante. No es necesario especificar una zona horaria aquí, ya que Instant
está siempre en UTC.
Instant now = Instant.now();
En Java 8 es:
ZonedDateTime dateTime = ZonedDateTime.now();
Java siempre ha recibido un 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 llevar a problemas de concurrencia. También hay ciertas fallas en la API. Por ejemplo, los años en java.util.Date
comienzan en 1900, los meses comienzan en 1, y los días comienzan en 0, no muy intuitivo. Estos problemas llevaron a la popularidad de las bibliotecas de fecha y hora de terceros, como Joda-Time
. Para abordar una nueva fecha y hora, la API está diseñada para Java SE 8.
LocalDateTime timePoint = LocalDateTime.now();
System.out.println(timePoint);
Según el doc :
El método
now()
devuelve la fecha y hora actual utilizando el reloj del sistema y la zona horaria predeterminada, no nula . Obtiene la fecha y hora actual del reloj del sistema en la zona horaria predeterminada. Esto consultará 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 usar un reloj alternativo para las pruebas porque el reloj está codificado.
Muchos consideran que las clases de Date y Calendar Java están mal diseñadas. Debería echar un vistazo a Joda Time , una biblioteca que se usa comúnmente en lugar de las bibliotecas de fecha integradas de Java.
El equivalente de DateTime.Now
en Joda Time es:
DateTime dt = new DateTime();
Actualizar
Como se señaló en los comentarios, las últimas versiones de Joda Time tienen un método DateTime.now()
, por lo que:
DateTime dt = DateTime.now();
Prefiero usar el objeto Calendario.
Calendar now = GregorianCalendar.getInstance()
Me resulta mucho más fácil trabajar con él. También puede obtener un objeto de fecha del calendario.
http://java.sun.com/javase/6/docs/api/java/util/GregorianCalendar.html
Si crea un nuevo objeto Fecha, se configurará de forma predeterminada a la hora actual:
import java.util.Date;
Date now = new Date();
Solo construye 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 las palabras de los Javadocs para el constructor de argumento cero :
Asigna un objeto Date y lo inicializa para que represente el momento en que se asignó , medido al milisegundo más cercano.
Asegúrese de que está utilizando java.util.Date
y no java.sql.Date
; este último no tiene un constructor de argumento cero y tiene una semántica algo diferente que es el tema de una conversación completamente diferente. :)
java.lang.System.currentTimeMillis();
devolverá el datetime desde la época
import org.joda.time.DateTime;
DateTime now = DateTime.now();