Проблема с добавлением минут с помощью plusMinutes - PullRequest
8 голосов
/ 27 декабря 2010

Я пытаюсь добавить несколько минут к дате, используя plusMinutes, но она просто ничего не добавляет:

Вот код:

    String currentDate ;
    SimpleDateFormat myFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");
    Date date1= null;
    DateTime dt;

    currentDate ="27/12/2010 11:29" ;

    try {
           date1= myFormat.parse(currentDate);

        } catch (ParseException ex) {

        ex.printStackTrace();

    }
    dt = new DateTime(date1);
    dt.plusMinutes(30);

Ответы [ 4 ]

16 голосов
/ 27 декабря 2010

Javadoc говорит

Возвращает копию этой даты и времени плюс указанное количество миллис.

, поэтому

сделатьчто-то вроде

dt = new DateTime(date1);
dt = dt.plusMinutes(30);
System.out.println(""+dt);
2 голосов
/ 27 декабря 2010

Я думаю, что вы хотите dt = dt.plusMinutes(30);

plusMinutes возвращает вычисленный dateTime. Он не изменяет дату и время, в которое он вызывается.

2 голосов
/ 27 декабря 2010

Красота йоды в том, что большинство их классов неизменны, как String в Java.Операции обновления не изменяют исходный объект.Так plusMinutes (...) возвращает новую копию DateTime с добавленными минутами, которые можно назначить новой переменной, как показано ниже.

DateTime newDt=dt.plusMinites(30);
System.out.println(newDt);
1 голос
/ 08 марта 2018

tl; др

java.time.LocalDateTime.parse( 
    "27/12/2010 11:29" , 
    DateTimeFormatter.ofPattern( "dd/MM/uuuu HH:mm" )
).plusMinutes( 30 )

2010-12-27T11: 59

Совет. Если вы предполагали, что это будет момент, определенная точка навременной шкалы, примените контекст часового пояса (ZoneId), чтобы получить ZonedDateTime.

java.time

В вашем вопросе используются старые классы даты и времени, вызывающие беспокойство, из самых ранних версийJava, и ваш Вопрос использует проект Joda-Time, который сейчас находится в режиме обслуживания.Оба были вытеснены java.time классами, встроенными в Java 8 и более поздние версии.

В вашем строковом вводе отсутствует индикатор часовой пояс или offset-из-UTC .Так что разбери как java.time.LocalDateTime.

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu HH:mm" ) ;
LocalDateTime ldt = LocalDateTime.parse( "27/12/2010 11:29" , f ) ;

ldt.toString (): 2010-12-27T11: 29

Обратите внимание, что у нет есть фактический момент,это , а не конкретная точка на временной шкале.Это только смутное представление о потенциальных моментах в диапазоне около 26-27 часов.Чтобы определить фактический момент, поместите его в контекст часового пояса (или смещения): ZonedDateTime zdt = ldt.atZone( ZoneId.of( "Pacific/Auckland" ) ) ;.

Добавьте свои минуты.

LocalDateTime later = ldt.plusMinutes( 30 ) ;

Later.toString (): 2010-12-27T11: 59


О java.time

Фреймворк java.time встроен в Java 8 и более поздние версии.Эти классы вытесняют старые классные устаревшие классы даты и времени, такие как java.util.Date, Calendar, & SimpleDateFormat.

Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .

Чтобы узнать больше, см. Oracle Tutorial .И поиск переполнения стека для многих примеров и объяснений.Спецификация: JSR 310 .

Вы можете обмениваться java.time объектами непосредственно с вашей базой данных.Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии.Нет необходимости в строках, нет необходимости в java.sql.* классах.

Где получить классы java.time?

  • Java SE 8 , Java SE 9 , а позже
    • Встроенный-в.
    • Часть стандартного Java API с встроенной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и Java SE 7
    • Большая часть функций java.time перенесена на Java 6 & 7 в ThreeTen-Backport .
  • Android
    • Более поздние версии реализации комплекта Android классов java.time.
    • Для более ранних версий Android (<26) проект <a href="https://github.com/JakeWharton/ThreeTenABP" rel="nofollow noreferrer"> ThreeTenABP адаптируется ThreeTen-Backport (упомянуто выше).См. Как использовать ThreeTenABP… .

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

...