web-dev-qa-db-fra.com

Changer la date Java il y a une heure

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 à une heure en arrière donc cela devrait me donner

Thu Jan 12 09:17:47 GMT 2012

Quelle serait la meilleure façon de le faire?

94
Makky

Java.util.Calendar

Calendar cal = Calendar.getInstance();
// remove next line if you're always using the current time.
cal.setTime(currentDate);
cal.add(Calendar.HOUR, -1);
Date oneHourBack = cal.getTime();

Java.util.Date

new Date(System.currentTimeMillis() - 3600 * 1000);

org.joda.time.LocalDateTime

new LocalDateTime().minusHours(1)

Java 8: Java.time.LocalDateTime

LocalDateTime.now().minusHours(1)

Java 8 Java.time.Instant

// always in UTC if not timezone set
Instant.now().minus(1, ChronoUnit.HOURS));
// with timezone, Europe/Berlin for example
Instant.now()
       .atZone(ZoneId.of("Europe/Berlin"))
       .minusHours(1));
180
Kimi

Semblable à la solution de @Sumit Jain

Date currentDate = new Date(System.currentTimeMillis() - 3600 * 1000);

ou

Date currentDate = new Date(System.currentTimeMillis() - TimeUnit.HOURS.toMillis(1));
58
Peter Lawrey

Utilisez Calendrier .

Calendar cal = Calendar.getInstance();

cal.setTime(new Date());
cal.set(Calendar.HOUR, cal.get(Calendar.HOUR) - 1);
8
adarshr

Ou en utilisant le célèbre Joda Time bibliothèque:

DateTime dateTime = new DateTime();
dateTime = dateTime.minusHours(1);
Date modifiedDate = dateTime.toDate();
7
Jean Logeart

Soustrayez simplement le nombre de millisecondes dans une heure à partir de la date.

currentDate.setTime(currentDate.getTime() - 3600 * 1000));

6
Sumit Jain

Vous pouvez utiliser le code ci-dessous pour la date et l'heure:

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
       //get current date time with Calendar()
       Calendar cal = Calendar.getInstance();
       System.out.println("Current Date Time : " + dateFormat.format(cal.getTime()));

       cal.add(Calendar.DATE, 1);
       System.out.println("Add one day to current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.MONTH, 1);
       System.out.println("Add one month to current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.YEAR, 1);
       System.out.println("Add one year to current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.HOUR, 1);
       System.out.println("Add one hour to current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.MINUTE, 1);
       System.out.println("Add one minute to current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.SECOND, 1);
       System.out.println("Add one second to current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.DATE, -1);
       System.out.println("Subtract one day from current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.MONTH, -1);
       System.out.println("Subtract one month from current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.YEAR, -1);
       System.out.println("Subtract one year from current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.HOUR, -1);
       System.out.println("Subtract one hour from current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.MINUTE, -1);
       System.out.println("Subtract one minute from current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.SECOND, -1);
       System.out.println("Subtract one second from current date : " + dateFormat.format(cal.getTime()));

Sortie:

Current Date Time : 2008/12/28 10:24:53
Add one day to current date : 2008/12/29 10:24:53
Add one month to current date : 2009/01/28 10:24:53
Add one year to current date : 2009/12/28 10:24:53
Add one hour to current date : 2008/12/28 11:24:53
Add one minute to current date : 2008/12/28 10:25:53
Add one second to current date : 2008/12/28 10:24:54
Subtract one day from current date : 2008/12/27 10:24:53
Subtract one month from current date : 2008/11/28 10:24:53
Subtract one year from current date : 2007/12/28 10:24:53
Subtract one hour from current date : 2008/12/28 09:24:53
Subtract one minute from current date : 2008/12/28 10:23:53
Subtract one second from current date : 2008/12/28 10:24:52

Ce lien est bon: Voir ici

Et voir: Voir aussi

Et: ici

Et: ici

Et: ici

Si vous avez juste besoin de temps:

DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
3
user4813855

Ceci peut être réalisé en utilisant Java.util.Date. Le code suivant soustraira 1 heure de votre date.

Date date = new Date(yourdate in date format);
Date newDate = DateUtils.addHours(date, -1)

De même pour soustraire 20 secondes de votre date

newDate = DateUtils.addSeconds(date, -20)    
1
Dhananjay

Cela a fonctionné pour moi au lieu d'utiliser le format .Pour travailler avec le temps, utilisez simplement les méthodes parse et toString ()

String localTime = "6:11"; LocalTime localTime = LocalTime.parse (localtime)

LocalTime lt = 6:11; LocalTime = lt.toString ()

0