java.time
El Answer by BalusC es buena en que se señala que el uso de java.time. Pero esa respuesta usa LocalDateTime
donde Instant
es más apropiado. Un LocalDateTime
es no un momento en la línea de tiempo, ya que a propósito no tiene ningún concepto de offset-from-UTC o time zone.
java.time
java.time El marco está construido en Java 8 y versiones posteriores. Estas clases suplantan a las antiguas clases problemáticas de fecha y hora como java.util.Date
, .Calendar
, & java.text.SimpleDateFormat
. El equipo Joda-Time también aconseja la migración a java.time.
Para obtener más información, consulte el Oracle Tutorial. Y busque Stack Overflow para obtener muchos ejemplos y explicaciones.
Gran parte de la java.la funcionalidad de tiempo se back-ported a Java 6 & 7 en ThreeTen-Backport y adaptada a Android en ThreeTenABP.
Instant
Un momento en la línea de tiempo en UTC con una resolución de hasta nanoseconds está representado por la clase Instant
.
Instant instant = Instant.ofEpochSecond (1_320_105_600L);
Volcar a la consola. Su valor de entrada es el primer momento del 1 de noviembre de 2011 en UTC. El Z
en el extremo, abreviatura de 'Zulu', significa UTC.
System.out.println ("instant: " + instant);
instantánea: 2011-11-01T00: 00: 00Z
ZonedDateTime
En sus comentarios usted menciona que quieran ver esta fecha-hora a través de la lente de las veces America/Chicago
zona. Use un proper time zone name. Aplique una zona horaria, ZoneId
, para obtener un objeto ZonedDateTime
. Vemos que Chicago está cinco horas atrás de UTC en esa fecha.
ZoneId zoneId = ZoneId.of ("America/Chicago");
ZonedDateTime zdt = instant.atZone (zoneId);
zdt: 2011-10-31T19: 00-05: 00 [América/Chicago]
Cuerdas
las cuerdas visto anteriormente son en formato estándar ISO 8601. Para generar cadenas en otros formatos, use la clase DateTimeFormatter
. Puede especificar su propio patrón personalizado. Pero, en general, es mejor dejar que java.time se ubique automáticamente en el lenguaje humano y las normas culturales codificadas en un objeto Locale
.
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime (FormatStyle.FULL);
formatter = formatter.withLocale (Locale.US);
String output = zdt.format (formatter);
lunes por, 31 de de octubre de, 2011 7:00:00 PM CDT
Para especificar su propio formato personalizado, buscar desbordamiento de pila durante muchos ejemplos y más discusión.
Una idea sería navegar por los javadocs, por ejemplo java.util.Date – Ingo