Изменение даты Java на один час назад



у меня есть объект Date в Java:



Date currentDate = new Date();


Это даст текущую дату и время. Пример:



Thu Jan 12 10:17:47 GMT 2012


вместо этого я хочу получить дату, изменив ее на один час назад, чтобы она дала мне:



Thu Jan 12 09:17:47 GMT 2012


что было бы лучшим способом сделать это?

568   9  

9 ответов:

java.утиль.Календарь

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.утиль.Дата

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

орг.Джода.время.LocalDateTime

new LocalDateTime().minusHours(1)

Java 8: java.время.LocalDateTime

LocalDateTime.now().minusHours(1)

Java 8 java.время.Мгновенный

// 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));

похоже на решение @ Sumit Jain

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

или

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

tl; dr

на UTC:

Instant.now().minus( 1 , ChronoUnit.HOURS ) 

или, зонирована:

Instant.now()
       .atZone( ZoneId.of ( "America/Montreal" ) )
       .minusHours( 1 )

использование java.время

Java 8 и позже новый java.время встроенный фреймворк.

Instant

если вы заботитесь только о UTC (GMT), то используйте Instant класса.

Instant instant = Instant.now ();
Instant instantHourEarlier = instant.minus ( 1 , ChronoUnit.HOURS );

дамп в консоли.

System.out.println ( "instant: " + instant + " | instantHourEarlier: " + instantHourEarlier );

мгновенный: 2015-10-29T00: 37: 48.921 Z | instantHourEarlier: 2015-10-28T23: 37: 48.921 Z

обратите внимание, как в этот момент произошло, чтобы вернуться к вчерашней дате.

ZonedDateTime

если вы заботитесь о часовом поясе, используйте ZonedDateTime класса. Вы можете начать с мгновенного и назначить часовой пояс, a ZoneId, теперь режим обслуживания, советует миграцию на java.время.

чтобы узнать больше, смотрите Oracle Tutorial. Поиск переполнения стека для многих примеров и объяснений.

большая часть java.функциональность time обратно портирована на Java 6 & 7 в ThreeTen-Backport и далее адаптируется к Android на ThreeTenABP (см. как использовать...).

The ThreeTen-Extra проект расширяет java.время с дополнительными занятиями. Этот проект является испытательным полигоном для возможных будущих дополнений к java.время. Вы можете найти некоторые полезные классы, такие как Interval,YearWeek,YearQuarter и многое другое.

использовать календарь.

Calendar cal = Calendar.getInstance();

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

или с помощью известных Джода Времени библиотека:

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

просто вычтите количество миллисекунд в час от даты.

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

вы можете использовать код ниже для даты и времени :

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()));

выход :

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

эта ссылка хороша : посмотреть здесь

и видим : слишком

и : здесь

и : здесь

и : здесь

Если вам нужно просто время :

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

Это может быть достигнуто с помощью java.util.Date. Следующий код вычитает 1 час от вашей даты.

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

аналогично для вычитания 20 секунд от дата

newDate = DateUtils.addSeconds(date, -20)    

получить время в миллисекундах, минус ваши минуты в миллисекундах и конвертировать его в дату. Здесь вам нужно объективировать один!!!

    int minutes = 60;
    long currentDateTime = System.currentTimeMillis();
    Date currentDate = new Date(currentDateTime - minutes*60*1000);
    System.out.println(currentDate);

Comments

    Ничего не найдено.