tl; dr
Instant.ofEpochSecond( 1_280_512_800L )
2010-07-30T18: 00: 00Z
java.time
A nova estrutura java.time incorporada no Java 8 e posterior é a sucessora do Joda-Time.
Essas novas classes incluem um método prático de fábrica para converter uma contagem de segundos inteiros da época. Você recebe Instant
um momento na linha do tempo no UTC com resolução de até nanossegundos.
Instant instant = Instant.ofEpochSecond( 1_280_512_800L );
instant.toString (): 2010-07-30T18: 00: 00Z
Veja esse código executado ao vivo em IdeOne.com .
Asia/Kabul
ou Asia/Tehran
fusos horários?
Você relatou obter um valor da hora do dia de 22:30 em vez das 18:00 vistas aqui. Suspeito que o seu utilitário PHP esteja implicitamente aplicando um fuso horário padrão para ajustar a partir do UTC. Meu valor aqui é UTC, representado pelo Z
(abreviado para Zulu
, significa UTC). Alguma chance de seu sistema operacional ou PHP da máquina estar definido como Asia/Kabul
ou Asia/Tehran
fusos horários? Suponho que sim, como você relata IRST
em sua produção, o que aparentemente significa tempo no Irã. Atualmente, em 2017, essas são as únicas zonas operam com um horário de verão quatro horas e meia antes do UTC.
Especifique um nome próprio fuso horário no formato continent/region
, como America/Montreal
, Africa/Casablanca
, ou Pacific/Auckland
. Nunca use a abreviação de 3-4 letras, como EST
ou IST
ou IRST
como elas não são zonas verdadeiros tempo, não padronizados, e nem mesmo única (!).
Se você quiser ver seu momento pelas lentes do fuso horário de uma região específica, aplique a ZoneId
para obter a ZonedDateTime
. Ainda é o mesmo momento simultâneo, mas visto como uma hora diferente do relógio de parede .
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 [Ásia / Teerã]
Convertendo de java.time para classes herdadas
Você deve ficar com as novas classes java.time. Mas você pode converter para antigo, se necessário.
java.util.Date date = java.util.Date.from( instant );
Joda-Time
ATUALIZAÇÃO: O projeto Joda-Time agora está no modo de manutenção , com a equipe aconselhando a migração para o java.time classes .
Para sua informação, o construtor de um Joda-Time DateTime é semelhante: multiplique por mil para produzir um long
(não um int
!).
DateTime dateTime = new DateTime( ( 1_280_512_800L * 1000_L ), DateTimeZone.forID( "Europe/Paris" ) );
É melhor evitar as classes java.util.Date e .Calendar notoriamente problemáticas. Mas se você precisar usar uma Data, poderá converter do Joda-Time.
java.util.Date date = dateTime.toDate();
Sobre java.time
A estrutura java.time é integrada ao Java 8 e posterior. Essas classes suplantar os velhos problemáticos legados aulas de data e hora, como java.util.Date
, Calendar
, e SimpleDateFormat
.
O projeto Joda-Time , agora em modo de manutenção , aconselha a migração para as classes java.time .
Para saber mais, consulte o Tutorial do Oracle . E procure Stack Overflow para muitos exemplos e explicações. A especificação é JSR 310 .
Você pode trocar objetos java.time diretamente com seu banco de dados. Use um driver JDBC compatível com JDBC 4.2 ou posterior. Não há necessidade de strings, não há necessidade de java.sql.*
classes.
Onde obter as classes java.time?
- Java SE 8 , Java SE 9 e posterior
- Construídas em.
- Parte da API Java padrão com uma implementação em pacote configurável.
- O Java 9 adiciona alguns recursos e correções menores.
- Java SE 6 e Java SE 7
- Grande parte da funcionalidade java.time é portada para Java 6 e 7 no ThreeTen-Backport .
- Android
- Versões posteriores das implementações de pacote configurável do Android das classes java.time.
- Para anteriormente Android (<26), o ThreeTenABP projeto adapta ThreeTen-Backport (mencionados acima). Consulte Como usar o ThreeTenABP… .
O projeto ThreeTen-Extra estende java.time com classes adicionais. Este projeto é um campo de prova para possíveis adições futuras ao java.time. Você pode encontrar algumas classes úteis aqui, como Interval
, YearWeek
, YearQuarter
, e mais .