Tengo un objeto de fecha de Java:
Date currentDate = new Date();
Esto le dará la fecha y hora actuales. Ejemplo:
Thu Jan 12 10:17:47 GMT 2012
En cambio, quiero obtener la fecha, cambiándola a una hora atrás para que me dé:
Thu Jan 12 09:17:47 GMT 2012
¿Cuál sería la mejor forma de hacerlo?
mktime
equivalente en java? restarle 60 minutos?Respuestas:
java.util.Calendar
java.util.Date
org.joda.time.LocalDateTime
Java 8: java.time.LocalDateTime
Java 8 java.time.Instant
fuente
Similar a la solución de @Sumit Jain
o
fuente
Date currentDate = new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(10));
Esto debería tener un retraso de 10 minutos?tl; dr
En UTC :
O, dividido en zonas:
Usando java.time
Java 8 y versiones posteriores tienen incorporado el nuevo marco java.time .
Instant
Si solo te importa UTC (GMT), usa la
Instant
clase.Volcar a la consola.
Observe cómo en este instante pasó a saltar a la fecha de ayer.
ZonedDateTime
Si te importa una zona horaria, usa la
ZonedDateTime
clase. Puede comenzar con un Instant y asignar una zona horaria, unZoneId
objeto. Esta clase maneja los ajustes necesarios para anomalías como el horario de verano (DST) .Volcar a la consola.
Conversión
Las antiguas clases java.util.Date/.Calendar ahora están desactualizadas. Evítales. Son notoriamente problemáticos y confusos.
Cuando deba usar las clases antiguas para operar con código antiguo que aún no se ha actualizado para los tipos java.time, llame a los métodos de conversión. A continuación, se muestra un código de ejemplo que va de Instant o ZonedDateTime a java.util.Date.
…o…
Acerca de 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. Sin necesidad de cuerdas, sin 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
Utilice el calendario .
fuente
O usando la famosa biblioteca Joda Time :
fuente
Simplemente reste el número de milisegundos en una hora de la fecha.
currentDate.setTime(currentDate.getTime() - 3600 * 1000));
fuente
Puede utilizar el siguiente código para la fecha y la hora:
Salida:
Este enlace es bueno: ver aquí
Y mira: mira también
Y: Aquí
Y: Aquí
Y: Aquí
Si solo necesita tiempo:
fuente
Esto se puede lograr usando
java.util.Date
. El siguiente código restará 1 hora de su fecha.Similarmente para restar 20 segundos de su cita
fuente
Obtenga el tiempo en milisegundos, menos sus minutos en milisegundos y conviértalo en fecha. Aquí tienes que objetivar uno !!!
fuente
Me funcionó en lugar de usar el formato .Para trabajar con el tiempo, solo use los métodos parse y toString ()
String localTime = "6:11"; LocalTime localTime = LocalTime.parse (localtime)
LocalTime lt = 6:11; localTime = lt.toString ()
fuente