tl; dr
Instant.ofEpochSecond( 1_280_512_800L )
2010-07-30T18: 00: 00Z
java.time
El nuevo marco java.time integrado en Java 8 y posterior es el sucesor de Joda-Time.
Estas nuevas clases incluyen un práctico método de fábrica para convertir una cuenta de segundos enteros de época. Obtiene un Instant
momento en la línea de tiempo en UTC con una resolución de hasta nanosegundos.
Instant instant = Instant.ofEpochSecond( 1_280_512_800L );
instant.toString (): 2010-07-30T18: 00: 00Z
Vea ese código en vivo en IdeOne.com .
Asia/Kabul
o Asia/Tehran
zonas horarias?
Informó que obtuvo un valor de la hora del día de 22:30 en lugar de las 18:00 que se ven aquí. Sospecho que su utilidad PHP está aplicando implícitamente una zona horaria predeterminada para ajustar desde UTC. Mi valor aquí es UTC, representado por Z
(abreviatura Zulu
, significa UTC). Cualquier posibilidad de que su sistema operativo de la máquina o PHP se establece en Asia/Kabul
o Asia/Tehran
zonas horarias? Supongo que así como informas IRST
en tu salida, lo que aparentemente significa hora de Irán. Actualmente en 2017, esas son las únicas zonas que operan con un horario de verano que es cuatro horas y media antes de UTC.
Especificar un nombre de zona horaria correcta en el formato de continent/region
, por ejemplo America/Montreal
, Africa/Casablanca
o Pacific/Auckland
. Nunca use la abreviatura de 3-4 letras como EST
o IST
o IRST
ya que no son zonas horarias verdaderas, ni estandarizadas, ni siquiera únicas (!).
Si desea ver su momento a través de la lente de la zona horaria de una región en particular, aplique a ZoneId
para obtener a ZonedDateTime
. Sigue siendo el mismo momento simultáneo, pero visto como un reloj de pared diferente .
ZoneId z = ZoneId.of( "Asia/Tehran" ) ;
ZonedDateTime zdt = instant.atZone( z ); // Same moment, same point on timeline, but seen as different wall-clock time.
2010-07-30T22: 30 + 04: 30 [Asia / Teherán]
Conversión de java.time a clases heredadas
Deberías quedarte con las nuevas clases java.time. Pero puede convertir a viejo si es necesario.
java.util.Date date = java.util.Date.from( instant );
Joda-Time
ACTUALIZACIÓN: El proyecto Joda-Time ahora está en modo de mantenimiento , y el equipo aconseja migrar a las clases java.time .
FYI, el constructor para un Joda-Time DateTime es similar: multiplica por mil para producir un long
(¡no un int
!).
DateTime dateTime = new DateTime( ( 1_280_512_800L * 1000_L ), DateTimeZone.forID( "Europe/Paris" ) );
Lo mejor es evitar las clases java.util.Date y .Calendar notoriamente problemáticas. Pero si debe usar una Fecha, puede convertir de Joda-Time.
java.util.Date date = dateTime.toDate();
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
, y SimpleDateFormat
.
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?
- Java SE 8 , Java SE 9 y posterior
- Incorporado.
- Parte de la API Java estándar 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 java.time se transfiere a Java 6 y 7 en ThreeTen-Backport .
- Androide
- Versiones posteriores de las implementaciones de paquetes de Android de las clases java.time.
- Para anteriormente Android (<26), el ThreeTenABP proyecto adapta ThreeTen-Backport (mencionado anteriormente). Ver Cómo utilizar ThreeTenABP ... .
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 .