Eu tenho um objeto de data Java:
Date currentDate = new Date();
Isso fornecerá a data e a hora atuais. Exemplo:
Thu Jan 12 10:17:47 GMT 2012
Em vez disso, quero obter a data, alterando-a para uma hora de volta para que me dê:
Thu Jan 12 09:17:47 GMT 2012
Qual seria a melhor maneira de fazer isso?
mktime
equivalente em java? subtrair 60 minutos disso?Respostas:
java.util.Calendar
java.util.Date
org.joda.time.LocalDateTime
Java 8: java.time.LocalDateTime
Java 8 java.time.Instant
fonte
Semelhante à solução da @Sumit Jain
ou
fonte
Date currentDate = new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(10));
Isso deve estar 10 minutos atrasado?tl; dr
Em UTC :
Ou, zoneado:
Usando java.time
Java 8 e posterior tem a nova estrutura java.time integrada.
Instant
Se você se preocupa apenas com o UTC (GMT), use a
Instant
classe.Despeje para o console.
Observe como, neste instante, voltou para a data de ontem.
ZonedDateTime
Se você se preocupa com um fuso horário, use a
ZonedDateTime
classe. Você pode começar com um Instant e atribuir um fuso horário, umZoneId
objeto. Esta classe lida com os ajustes necessários para anomalias, como horário de verão (DST) .Despeje para o console.
Conversão
As antigas classes java.util.Date/.Calendar estão desatualizadas. Evite-os. Eles são notoriamente problemáticos e confusos.
Quando você deve usar as classes antigas para operar com código antigo ainda não atualizado para os tipos java.time, chame os métodos de conversão. Aqui está um exemplo de código indo de um Instant ou um ZonedDateTime para um java.util.Date.
…ou…
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
, eSimpleDateFormat
.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 Oracle . E pesquise no 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 cordas, não há necessidade de
java.sql.*
classes.Onde obter as classes java.time?
O projeto ThreeTen-Extra estende java.time com classes adicionais. Este projeto é um campo de provas para possíveis adições futuras ao java.time. Você pode encontrar algumas classes úteis aqui, como
Interval
,YearWeek
,YearQuarter
, e mais .fonte
Use o calendário .
fonte
Ou usando a famosa biblioteca Joda Time :
fonte
Basta subtrair o número de milissegundos em uma hora da data.
currentDate.setTime(currentDate.getTime() - 3600 * 1000));
fonte
Você pode usar o código abaixo para data e hora:
Resultado :
Este link é bom: Veja aqui
E veja: Veja também
E: aqui
E: aqui
E: aqui
Se você só precisa de tempo:
fonte
Isso pode ser feito usando
java.util.Date
. O código a seguir subtrairá 1 hora de sua data.Da mesma forma, para subtrair 20 segundos de sua data
fonte
Obtenha o tempo em milissegundos, menos seus minutos em milissegundos e converta-o em Data. Aqui você precisa objetivar um !!!
fonte
Funcionou para mim em vez de usar o formato. Para trabalhar com o tempo, basta usar os métodos parse e toString ()
String localTime = "6:11"; LocalTime localTime = LocalTime.parse (localtime)
LocalTime lt = 6:11; localTime = lt.toString ()
fonte