J'ai un objet de date Java:
Date currentDate = new Date();
Cela donnera la date et l'heure actuelles. Exemple:
Thu Jan 12 10:17:47 GMT 2012
Au lieu de cela, je veux obtenir la date, en la changeant d'une heure en arrière pour qu'elle me donne:
Thu Jan 12 09:17:47 GMT 2012
Quelle serait la meilleure façon de procéder?
mktime
équivalent en java? soustraire 60 minutes?Réponses:
java.util.Calendar
java.util.Date
org.joda.time.LocalDateTime
Java 8: java.time.LocalDateTime
Java 8 java.time.Instant
la source
Similaire à la solution de @Sumit Jain
ou
la source
Date currentDate = new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(10));
Cela devrait avoir 10 minutes de retard?tl; dr
En UTC :
Ou, zoné:
Utilisation de java.time
Java 8 et les versions ultérieures ont le nouveau framework java.time intégré.
Instant
Si vous ne vous souciez que de UTC (GMT), utilisez la
Instant
classe.Dump dans la console.
Notez comment, à cet instant, il est arrivé de revenir à la date d'hier.
ZonedDateTime
Si vous vous souciez d'un fuseau horaire, utilisez la
ZonedDateTime
classe. Vous pouvez commencer avec un instant et attribuer un fuseau horaire, unZoneId
objet. Cette classe gère les ajustements nécessaires pour les anomalies telles que l' heure d'été (DST) .Dump dans la console.
Conversion
Les anciennes classes java.util.Date/.Calendar sont désormais obsolètes. Évite-les. Ils sont notoirement gênants et déroutants.
Lorsque vous devez utiliser les anciennes classes pour fonctionner avec un ancien code non encore mis à jour pour les types java.time, appelez les méthodes de conversion. Voici un exemple de code allant d'un Instant ou d'un ZonedDateTime à un java.util.Date.
…ou…
À propos de java.time
Le framework java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciens gênants hérités des classes date-heure tels que
java.util.Date
,Calendar
, etSimpleDateFormat
.Le projet Joda-Time , désormais en mode maintenance , conseille la migration vers les classes java.time .
Pour en savoir plus, consultez le didacticiel Oracle . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310 .
Vous pouvez échanger des objets java.time directement avec votre base de données. Utilisez un pilote JDBC compatible avec JDBC 4.2 ou version ultérieure. Pas besoin de chaînes, pas besoin de
java.sql.*
classes.Où obtenir les classes java.time?
Le projet ThreeTen-Extra étend java.time avec des classes supplémentaires. Ce projet est un terrain d'essai pour d'éventuels futurs ajouts à java.time. Vous trouverez peut - être des classes utiles ici, comme
Interval
,YearWeek
,YearQuarter
et plus .la source
Utilisez le calendrier .
la source
Ou en utilisant la célèbre bibliothèque Joda Time :
la source
Il suffit de soustraire le nombre de millisecondes dans une heure de la date.
currentDate.setTime(currentDate.getTime() - 3600 * 1000));
la source
Vous pouvez utiliser le code ci-dessous pour la date et l'heure:
Production :
Ce lien est bon: voir ici
Et voir: Voir aussi
Et: ici
Et: ici
Et: ici
Si vous avez besoin de temps:
la source
Ceci peut être réalisé en utilisant
java.util.Date
. Le code suivant soustraira 1 heure de votre date.De même pour soustraire 20 secondes de votre date
la source
Obtenez l'heure en millisecondes, moins vos minutes en millisecondes et convertissez-la en date. Ici, vous devez en objectiver un !!!
la source
Cela a fonctionné pour moi à la place en utilisant le format .Pour travailler avec le temps, utilisez simplement les méthodes parse et toString ()
String localTime = "6:11"; LocalTime localTime = LocalTime.parse (heure locale)
LocalTime lt = 6:11; localTime = lt.toString ()
la source