@Joachim El lado negativo de este enfoque "estándar" es que tengo que tener muchas instancias "yyyy-MM-dd'T'HH:mmZ"en mi aplicación, cada vez que necesito una fecha con formato ISO-8601. Con JodaTime, como veo, puedo usar un formateador predefinido ISODateTimeFormat, que hace este trabajo por mí ..
yegor256
8
@Joachim, Zes el patrón válido en SimpleDateFormat, en lugar hacer esto: yyyy-MM-dd'T'HH:mm'Z'.
Buhake Sindi
33
-1 Esto le da la fecha / hora en la zona horaria actual, no UTC. La respuesta de Carlos incluye el código UTC necesario.
Scott Rippey
16
Acabo de corregir el error de zona horaria, ya que es la respuesta aceptada, creo que fue lo correcto.
BoD
2
La Z necesita ser citada como "aaaa-MM-dd'T'HH: mm'Z '"
Kimball Robinson el
224
Para sistemas donde la zona horaria predeterminada no es UTC:
La SimpleDateFormatinstancia se puede declarar como una constante global si se necesita con frecuencia, pero tenga en cuenta que esta clase no es segura para subprocesos. Debe sincronizarse si varios subprocesos acceden simultáneamente.
EDITAR: Preferiría Joda Time si hiciera muchas manipulaciones diferentes de hora / fecha ...
EDIT2: corregido: setTimeZoneno acepta una cadena (corregido por Paul)
¿Este formato no es una constante en ninguna parte de una biblioteca integrada?
Daniel Kaplan
Hay dos paquetes diferentes para 'DateFormat', recuerde usar 'import java.text.DateFormat'
oabarca
3
Si desea la zona horaria actual, use TimeZone tz = TimeZone.getDefault (); en cambio
oabarca
Usted debe no citar a la 'Z' en el formato, ya que hace que sea lógicamente insignificante. Si TimeZone es UTC como en el ejemplo anterior, una Z sin comillas solo dará como resultado una Z en la salida ... sin embargo, si TimeZone no es UTC, la Z aún se emitirá como una UTC literal, lo que implica que el tiempo no puede ser. Si un sistema consumidor lee la Z como UTC pero el tiempo no es, el tiempo cambiará. Por el contrario, si un analizador utiliza la Z entrecomillada sin establecer la zona horaria, analizará las horas UTC como horas locales (nuevamente cambiando). Esta cita no es necesaria si la TZ está configurada, pero es peligrosa si no lo está.
Matt Whipple
@MattWhipple, pero si usa una Z sin comillas, el resultado será algo así como 2016-06-14T13:56+0000: la pregunta es algo así como2016-06-14T13:56Z
user85421
184
Java 8 Native
java.time lo hace simple desde Java 8. Y es seguro para subprocesos.
Es posible que tenga la tentación de usar un encendedor Temporalcomo Instanto LocalDateTime, pero carece de soporte de formateador o datos de zona horaria. Solo ZonedDateTimefunciona fuera de la caja.
Los requisitos refinados, como la eliminación de la parte de segundos, aún deben cumplirse mediante formatos personalizados o postprocesos personalizados.
Para Java 6 y 7, puede considerar puertos posteriores de java.time como ThreeTen-Backport , que también tiene un puerto Android . Ambos son más ligeros que Joda y han aprendido de la experiencia de Joda, especialmente. considerando que java.time está diseñado por el autor de Joda.
Buena respuesta. Observe el buen hábito de especificar explícitamente una zona horaria en lugar de depender implícitamente de la zona horaria predeterminada actual de la JVM. Puede especificar una zona horaria particular si lo desea, como ZoneId.of( "America/Montreal" ).
Basil Bourque
1
Instant permite formatearlo en formato ISO 8601 simplemente llamando al método .toString ():return DateTimeFormatter.ISO_INSTANT.format(this);
VadymVL
Esto es mejor porque evita el valor predeterminado.
Christophe Roussy el
66
Advertencia: La solución para Java 8 que usa ISO_INSTANT tiene una peculiaridad molesta. Cuando los milisegundos son 0, no se incluyen en la salida. Esto está permitido según el estándar ISO 8601, pero muchas bibliotecas y analizadores en otros idiomas no son tan indulgentes. Si es necesario incluir siempre los ceros, use esto en su lugar: DateTimeFormatter ISO_8601 = ofPattern ("aaaa-MM-dd'T'HH: mm: ss.SSSX"). WithZone (UTC);
jurgen
Después de cambiar de Java 8 a 11, veo DateTimeFormatter.ISO_INSTANTy DateTimeFormatter.ISO_DATE_TIMEuso 6 dígitos después de los segundos, en lugar de 3, que Spring ya no recoge @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME).
Bueno, ya sea que incluya una biblioteca de terceros adicional como una dependencia de su proyecto (que puede que desee mantener actualizado y enviar con su aplicación, oye, solo son 3.2 megabytes adicionales) y DateTime dt = new DateTime(); DateTimeFormatter fmt = ISODateTimeFormat.dateTime(); String str = fmt.print(dt);encapsular return String.format("%tFT%<tRZ", new Date());en una clase, y hazlo str = Iso8601Time.now(), donde sea que lo necesites. (No es que el formato ISO vaya a cambiar). Si resulta que necesita algo más que la fecha actual en formato ISO, use una lib.
aioobe
2
Totalmente de acuerdo con esto.
yegor256
3
Tenga en cuenta que es posible cambiar qué respuesta está marcada como aceptada ;-)
Esta es la respuesta correcta, y es un escándalo que no haya sido votado más alto sobre todos estos inventados SimpleDateFormats.
David Moles
Me alegro de haber leído más respuestas. Estoy de acuerdo, esta debería ser la respuesta ahora.
Xan-Kun Clark-Davis
Y como es así toString, en muchos casos ni siquiera necesitará llamarlo explícitamente.
kaya3
1
La advertencia en un comentario sobre una respuesta anterior también se aplica aquí: "Advertencia: la solución para Java 8 que usa ISO_INSTANT tiene una peculiaridad molesta. Cuando los milisegundos son 0, no están incluidos en la salida. Esto está permitido de acuerdo con la ISO 8601 estándar, pero muchas bibliotecas y analizadores en otros idiomas no son tan indulgentes ".
Si no desea agregar o si no ve el valor de agregar la biblioteca anterior, puede usar en la SimpleDateFormatclase incorporada para formatear la Fecha al formato ISO requerido
¿Y cómo producirías una cadena formateada como se muestra en la pregunta?
Joachim Sauer
44
Yo diría que no agregue una dependencia de biblioteca para algo tan simple como esto (que se puede lograr con dos líneas de código java). (Claro, si los requisitos crecen, es otra historia.)
aioobe
1
@aioobe, si solo se usa en varias partes de la aplicación, entonces está bien ir por defecto, en caso de descanso jodatime es mejor.
Jigar Joshi
55
@aioobe jodatime es mejor en cualquier caso, porque tiene ISODateTimeFormatun formateador predefinido de ISO-8601.
yegor256
3
@ org.life.java: que solo son relevantes cuando puedes cambiar al tiempo de Jode correctamente. No los tendrá, cuando use solo esta función del tiempo de Joda.
Joachim Sauer
20
DateFormatUtils de Apache commons-lang3tienen constantes útiles, por ejemplo:DateFormatUtils.ISO_DATETIME_FORMAT
Más exactamente, el momento actual en GMT: DateFormatUtils.format(new Date(), "yyyy-MM-dd'T'HH:mm'Z'", TimeZone.getTimeZone("UTC"));momento actual de la zona horaria predeterminada: DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.format(new Date()); @ yegor256 gracias por mencionar DateFormatUtils, teniendo a bordo apache commons-lang vale la pena usar el formato de fecha.
babinik
19
Si no quieres incluir Jodatime (tan bueno como es)
Esto es seguro para subprocesos. Joda-Time crea nuevos objetos inmutables en lugar de cambiar los objetos existentes.
Si realmente pretendía solicitar un formato sin segundos, resolviendo en minutos, utilice uno de los muchos otros formateadores integrados en Joda-Time.
DateTime now =newDateTime(DateTimeZone.UTC );String output =ISODateTimeFormat.dateHourMinute.print( now );
java.time
Para Java 8 y versiones posteriores, Joda-Time continúa funcionando. Pero el marco java.time incorporado suplanta a Joda-Time. Así que migre su código de Joda-Time a java.time tan pronto como sea conveniente.
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 .
Puede intercambiar objetos java.time directamente con su base de datos. Utilice un controlador JDBC compatible con JDBC 4.2 o posterior. No hay necesidad de cadenas, no hay necesidad de java.sql.*clases.
El proyecto ThreeTen-Extra extiende java.time con clases adicionales. Este proyecto es un campo de pruebas para posibles adiciones futuras a java.time. Usted puede encontrar algunas clases útiles aquí, como Interval, YearWeek, YearQuarter, y más .
Puede usar SimpleDateFormat de Java con el siguiente patrón yyyy-MM-dd'T'HH:mm:ssXXXpara ISO 8601.
Código de muestra: (enumera todas las zonas horarias disponibles)
for(String timeZone :TimeZone.getAvailableIDs()){DateFormat dateFormat =newSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
dateFormat.setTimeZone(TimeZone.getTimeZone(timeZone));String formatted = dateFormat.format(newDate());System.out.print(formatted);if(formatted.endsWith("Z")){// These time zone's have offset of '0' from GMT.System.out.print("\t("+ timeZone +")");}System.out.println();}
Si desea la hora actual, no es necesario pasar por un Dateobjeto antiguo . Solo hazlo Instant.now().toString(). Si obtuvo una Datede una API heredada, su método es el mejor.
Algunas de las otras respuestas son correctas al recomendar clases java.time , pero utilizan longitudes innecesarias para sus necesidades específicas.
Instant.now()// Capture the current moment in UTC with a resolution as fines nanoseconds but usually in microseconds or milliseconds..truncatedTo(ChronoUnit.MINUTES )// Lop off any seconds or fractional second, to get a value in whole minutes..toString()// Generate a String in standard ISO 8601 format where a `T` separates the year-month-day from the hour-minute-second, and the `Z` on the end for “Zulu” means UTC.
2018-01-23T12: 34Z
Instant::toString
La jav.time.Instantclase representa un momento en UTC, siempre en UTC.
El Zfinal de la cadena de ejemplo 2010-10-12T08:50Zse pronuncia "Zulu" y significa UTC .
Su formato deseado cumple con el estándar ISO 8601 . Las clases java.time usan estos formatos estándar de forma predeterminada al analizar / generar cadenas. Por lo tanto, no es necesario especificar un patrón de formato. Simplemente llame Instant::toStringcomo se ve arriba.
Si desea específicamente minutos enteros sin segundos o segundos fraccionarios, trunca. Especifique una unidad de tiempo por ChronoUnitclase.
Instant instant =Instant.now().truncatedTo(ChronoUnit.MINUTES );String output = instant.toString();// Generate a `String` object in standard ISO 8601 format.
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 .
Puede intercambiar objetos java.time directamente con su base de datos. Utilice un controlador JDBC compatible con JDBC 4.2 o posterior. No hay necesidad de cadenas, no hay necesidad de java.sql.*clases.
El proyecto ThreeTen-Extra extiende java.time con clases adicionales. Este proyecto es un campo de pruebas para posibles adiciones futuras a java.time. Usted puede encontrar algunas clases útiles aquí, como Interval, YearWeek, YearQuarter, y más .
Hacerlo estático puede causar problemas, ya que SimpleDateFormat no es seguro para subprocesos: "Los formatos de fecha no están sincronizados. Se recomienda crear instancias de formato separadas para cada subproceso. Si varios subprocesos acceden a un formato simultáneamente, debe sincronizarse externamente". docs.oracle.com/javase/7/docs/api/java/text/…
Juha Palomäki
2
Como @Juha Palomäki mencionó, esto no es seguro. Si está utilizando Java 8 o superior, ThreadLocal.withInitial puede solucionarlo. Si está utilizando Java 7 o inferior, cree un nuevo ThreadLocal y proporcione un valor inicial anulando ThreadLocal.initialValue
user393274
@ user393274: si está utilizando Java 8, debería usarlo Instant, DateTimeFormaty los otros reemplazos modernos seguros para subprocesos
Estoy un poco desconcertado por cuál es el problema con SimpleDateFormat no es seguro para subprocesos. Si dos subprocesos ejecutan el inicializador estático al mismo tiempo, no veo que ocurra nada peor que el constructor SimpleDateFormat se llama dos veces, pero solo un instante (el último en terminar) se registra como "df".
gilbertpilz
2
privatestaticString getCurrentDateIso(){// Returns the current date with the same format as Javascript's new Date().toJSON(), ISO 8601DateFormat dateFormat =newSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",Locale.US);
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));return dateFormat.format(newDate());}
Aún así, joda-time solo admite el formato extendido: "2015-12-09T00: 22: 42.930Z" no el básico: "20151209T002242.930Z" ... podría ser mejor probar una lista de formatos con Java SimpleDateFormat.
Lo hice en Android usando Calendar y SimpleDateFormat. El siguiente método devuelve un calendario con la zona horaria "GMT" (esta es la zona horaria universal). Luego, puede usar la clase Calendar para establecer la hora entre diferentes zonas horarias, utilizando el método setTimeZone () de la clase Calendar.
RECUERDE: La clase Date no sabe sobre la existencia de TimeZone. Por este motivo, si depura una fecha, siempre verá la fecha de su zona horaria actual.
Si le importa el rendimiento, creé una biblioteca que supera el analizador y formateador Java estándar al manipular las fechas con formato ISO8601. Las implementaciones de DatetimeProcessor son seguras para subprocesos y se pueden almacenar en caché en un mapa concurrente o campos estáticos.
Deberían haber agregado algún tipo de manera simple de pasar de Fecha a Instant y también un método llamado toISO8601, que es lo que mucha gente está buscando. Como complemento a otras respuestas, desde una fecha java.util.Date a ISO 8601:
Instant.ofEpochMilli(date.getTime()).toString();
No es realmente visible cuando se utiliza la finalización automática pero
java.time.Instant.toString():
Una representación de cadena de este instante utilizando ISO-8601
Si bien este código puede responder a la pregunta, proporcionar un contexto adicional con respecto a por qué y / o cómo este código responde a la pregunta mejora su valor a largo plazo.
private static SimpleDateFormat
no es seguro para subprocesos.Respuestas:
Use
SimpleDateFormat
para formatear cualquierDate
objeto que desee:El uso de
new Date()
como se muestra arriba formateará la hora actual.fuente
"yyyy-MM-dd'T'HH:mmZ"
en mi aplicación, cada vez que necesito una fecha con formato ISO-8601. Con JodaTime, como veo, puedo usar un formateador predefinidoISODateTimeFormat
, que hace este trabajo por mí ..Z
es el patrón válido en SimpleDateFormat, en lugar hacer esto:yyyy-MM-dd'T'HH:mm'Z'
.Para sistemas donde la zona horaria predeterminada no es UTC:
La
SimpleDateFormat
instancia se puede declarar como una constante global si se necesita con frecuencia, pero tenga en cuenta que esta clase no es segura para subprocesos. Debe sincronizarse si varios subprocesos acceden simultáneamente.EDITAR: Preferiría Joda Time si hiciera muchas manipulaciones diferentes de hora / fecha ...
EDIT2: corregido:
setTimeZone
no acepta una cadena (corregido por Paul)fuente
2016-06-14T13:56+0000
: la pregunta es algo así como2016-06-14T13:56Z
Java 8 Native
java.time lo hace simple desde Java 8. Y es seguro para subprocesos.
Resultado:
2015-04-14T11:07:36.639Z
Al ajustar o encadenar las opciones / operaciones de ZonedDateTime y DateTimeFormatter , puede controlar fácilmente la zona horaria y la precisión , hasta cierto punto:
Resultado:
2015-04-14T11:07:00+01:00[Europe/Paris]
Los requisitos refinados, como la eliminación de la parte de segundos, aún deben cumplirse mediante formatos personalizados o postprocesos personalizados.
fuente
ZoneId.of( "America/Montreal" )
.return DateTimeFormatter.ISO_INSTANT.format(this);
DateTimeFormatter.ISO_INSTANT
yDateTimeFormatter.ISO_DATE_TIME
uso 6 dígitos después de los segundos, en lugar de 3, que Spring ya no recoge@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
.Java 8:
Pre Java 8:
De los documentos :
fuente
DateTime dt = new DateTime(); DateTimeFormatter fmt = ISODateTimeFormat.dateTime(); String str = fmt.print(dt);
encapsularreturn String.format("%tFT%<tRZ", new Date());
en una clase, y hazlostr = Iso8601Time.now()
, donde sea que lo necesites. (No es que el formato ISO vaya a cambiar). Si resulta que necesita algo más que la fecha actual en formato ISO, use una lib.%tFT%<tTZ
incluirá segundos;%tFT%<tTZ.%<tL
incluirá milisegundos.A partir de Java 8, simplemente puede hacer:
De los
java.time.Instant
documentos:fuente
SimpleDateFormats
.toString
, en muchos casos ni siquiera necesitará llamarlo explícitamente.usar JodaTime
Aquí está el documento para JodaTime Formatter
Editar:
Si no desea agregar o si no ve el valor de agregar la biblioteca anterior, puede usar en la
SimpleDateFormat
clase incorporada para formatear la Fecha al formato ISO requeridocomo lo sugirió @Joachim Sauer
fuente
ISODateTimeFormat
un formateador predefinido de ISO-8601.DateFormatUtils de Apache
commons-lang3
tienen constantes útiles, por ejemplo:DateFormatUtils.ISO_DATETIME_FORMAT
fuente
DateFormatUtils.format(new Date(), "yyyy-MM-dd'T'HH:mm'Z'", TimeZone.getTimeZone("UTC"));
momento actual de la zona horaria predeterminada:DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.format(new Date())
; @ yegor256 gracias por mencionarDateFormatUtils
, teniendo a bordo apache commons-lang vale la pena usar el formato de fecha.Si no quieres incluir Jodatime (tan bueno como es)
que devuelve una cadena de:
que es ligeramente diferente a la solicitud original pero sigue siendo ISO-8601.
fuente
ISO 8601 puede contener segundos ver http://en.wikipedia.org/wiki/ISO_8601#Times
entonces el código debería ser
fuente
Joda-Time
Actualización: El proyecto Joda-Time ahora está en modo de mantenimiento , y el equipo aconseja migrar a las clases java.time . Para Java 6 y 7, consulte el proyecto ThreeTen-Backport , más adaptado para Android en el proyecto ThreeTenABP .
Usando la biblioteca Joda-Time ...
Esto es seguro para subprocesos. Joda-Time crea nuevos objetos inmutables en lugar de cambiar los objetos existentes.
Si realmente pretendía solicitar un formato sin segundos, resolviendo en minutos, utilice uno de los muchos otros formateadores integrados en Joda-Time.
java.time
Para Java 8 y versiones posteriores, Joda-Time continúa funcionando. Pero el marco java.time incorporado suplanta a Joda-Time. Así que migre su código de Joda-Time a java.time tan pronto como sea conveniente.
Vea mi otra respuesta para una solución moderna.
Sobre 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
, ySimpleDateFormat
.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 busque Stack Overflow para obtener 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 hay necesidad de cadenas, no hay necesidad de
java.sql.*
clases.¿Dónde obtener las clases java.time?
El proyecto ThreeTen-Extra extiende java.time con clases adicionales. Este proyecto es un campo de pruebas para posibles adiciones futuras a java.time. Usted puede encontrar algunas clases útiles aquí, como
Interval
,YearWeek
,YearQuarter
, y más .fuente
Para Java versión 7
Puede seguir la documentación de Oracle: http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
X: se utiliza para la zona horaria ISO 8601
fuente
Puede usar SimpleDateFormat de Java con el siguiente patrón
yyyy-MM-dd'T'HH:mm:ssXXX
para ISO 8601.Podrías usar:
para la zona horaria vm predeterminada. Más aquí
Es posible que observe la fecha y hora de algunas zonas horarias que terminan en
'Z'
. Estas zonas horarias tienen una compensación de'0'
GMT.Más información se puede encontrar aquí .
fuente
Creo que la forma más fácil es ir primero al instante y luego encadenar como:
Lo que resultará en:
2017-09-08T12:56:45.331Z
fuente
Date
objeto antiguo . Solo hazloInstant.now().toString()
. Si obtuvo unaDate
de una API heredada, su método es el mejor.java.util.Date
,java.util.Calendar
yjava.text.SimpleDateFormat
ahora son heredadas , suplantadas por las clases java.time integradas en Java 8 y posteriores. Ver Tutorial de Oracle .tl; dr
Algunas de las otras respuestas son correctas al recomendar clases java.time , pero utilizan longitudes innecesarias para sus necesidades específicas.
Instant::toString
La
jav.time.Instant
clase representa un momento en UTC, siempre en UTC.El
Z
final de la cadena de ejemplo2010-10-12T08:50Z
se pronuncia "Zulu" y significa UTC .Su formato deseado cumple con el estándar ISO 8601 . Las clases java.time usan estos formatos estándar de forma predeterminada al analizar / generar cadenas. Por lo tanto, no es necesario especificar un patrón de formato. Simplemente llame
Instant::toString
como se ve arriba.Si desea específicamente minutos enteros sin segundos o segundos fraccionarios, trunca. Especifique una unidad de tiempo por
ChronoUnit
clase.Sobre 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
, ySimpleDateFormat
.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 busque Stack Overflow para obtener 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 hay necesidad de cadenas, no hay necesidad de
java.sql.*
clases.¿Dónde obtener las clases java.time?
El proyecto ThreeTen-Extra extiende java.time con clases adicionales. Este proyecto es un campo de pruebas para posibles adiciones futuras a java.time. Usted puede encontrar algunas clases útiles aquí, como
Interval
,YearWeek
,YearQuarter
, y más .fuente
Aquí hay una clase completa optimizada para que invocar "now ()" no haga nada más de lo que tiene que hacer.
fuente
Instant
,DateTimeFormat
y los otros reemplazos modernos seguros para subprocesosfuente
Aún así, joda-time solo admite el formato extendido: "2015-12-09T00: 22: 42.930Z" no el básico: "20151209T002242.930Z" ... podría ser mejor probar una lista de formatos con Java SimpleDateFormat.
fuente
Lo hice en Android usando Calendar y SimpleDateFormat. El siguiente método devuelve un calendario con la zona horaria "GMT" (esta es la zona horaria universal). Luego, puede usar la clase Calendar para establecer la hora entre diferentes zonas horarias, utilizando el método setTimeZone () de la clase Calendar.
RECUERDE: La clase Date no sabe sobre la existencia de TimeZone. Por este motivo, si depura una fecha, siempre verá la fecha de su zona horaria actual.
fuente
Si le importa el rendimiento, creé una biblioteca que supera el analizador y formateador Java estándar al manipular las fechas con formato ISO8601. Las implementaciones de DatetimeProcessor son seguras para subprocesos y se pueden almacenar en caché en un mapa concurrente o campos estáticos.
fuente
Deberían haber agregado algún tipo de manera simple de pasar de Fecha a Instant y también un método llamado
toISO8601
, que es lo que mucha gente está buscando. Como complemento a otras respuestas, desde una fecha java.util.Date a ISO 8601:No es realmente visible cuando se utiliza la finalización automática pero
java.time.Instant.toString()
:fuente
fuente
Prueba esto,
Es para el formato ISO 8601
fuente