tl; dr
Instant.now() // Capture current moment in UTC.
.toString() // Generate a String object in standard ISO 8601 format, YYYY-MM-DDTHH:MM:SS.SSSSSSSSSZ.
2018-02-16T23: 28: 01.101324Z
java.time
El enfoque moderno utiliza java.time clases. Evite por completo las problemáticas clases heredadas de fecha y hora.
La clase Instant
representa un momento en la línea de tiempo en UTC con una resolución de nanoseconds (hasta nueve (9) dígitos de una fracción decimal).
Instant instant = Instant.now() ; // Capture the current moment in UTC.
generar una cadena en el formato estándar ISO 8601 llamando toString
.
String output = instant.toString() ;
Si necesita más flexibilidad que proporciona Instant
, como el formateo, mientras que la generación de cadenas, utilice OffsetDateTime
con la constante ZoneOffset.UTC
.
OffsetDateTime odt = OffsetDateTime.now(ZoneOffset.UTC) ; // Capture the current moment in UTC.
Para generar cadenas en formatos no estándar, utilice un DateTimeFormatter
.
Sobre java.time
El marco java.time está incorporado en Java 8 y versiones posteriores. Estas clases suplantan a las viejas y problemáticas clases de fecha y hora de legacy, como java.util.Date
, Calendar
, & SimpleDateFormat
.
El proyecto Joda-Time, ahora en maintenance mode, recomienda la migración a las clases java.time.
Para obtener más información, consulte el Oracle Tutorial. Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310.
El uso de un JDBC driver compatible con JDBC 4.2 o temprano, es posible intercambiar java.time objetos directamente con su base de datos. No necesita cadenas ni clases java.sql. *.
¿Dónde obtener las clases java.time?
- Java SE 8, Java SE 9, y más tarde
- incorporado.
- Parte de la API estándar de Java con una implementación integrada.
- Java 9 agrega algunas características menores y correcciones.
- Java SE 6 y Java SE 7
- Gran parte de la funcionalidad de back-java.time está portado a Java 6 & 7 en ThreeTen-Backport.
- Android
- Las versiones posteriores de las implementaciones de haces de Android de las clases java.time.
- Para Android anterior, el proyecto ThreeTenABP se adapta a ThreeTen-Backport (mencionado anteriormente). Ver How to use ThreeTenABP….
El proyecto se extiende ThreeTen-Extra 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.
@jpredham probablemente debería obtener la "respuesta" a esta pregunta ya que está en lo correcto al recuperar la fecha/hora como GMT. (Lo probé yo mismo y lo encontré cierto.) Además, él es más nuevo y el resto de nosotros ya tenemos bastante reputación. –
FYI, las viejas clases problemáticas de fecha y hora como ['java.util.Date'] (https://docs.oracle.com/javase/9/docs/api/java/util/Date.html), [ 'java.util.Calendar'] (https://docs.oracle.com/javase/9/docs/api/java/util/Calendar.html), y' java.text.SimpleDateFormat' ahora son [legacy] (https://en.wikipedia.org/wiki/Legacy_system), suplantado por el [java.time] (https://docs.oracle.com/javase/9/docs/api/java/time/package-summary. html) clases integradas en Java 8 y Java 9. Consulte [Tutorial de Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –