Как узнать количество лет между двумя java.util.Date? - PullRequest
4 голосов
/ 14 ноября 2008

Как узнать количество лет между двумя java.util.Date?

Примечание: с использованием только java.util.Date

Ответы [ 4 ]

9 голосов
/ 14 ноября 2008

Насколько точно вы должны быть? Если приблизительный достаточно хорош, я бы сделал

long msDiff = date1.getTime() - date2.getTime();
int yearDiff = (int)(msDiff / 1000 / 60 / 60 / 24 / 365.25);
1 голос
/ 25 ноября 2008

Вам действительно нужно использовать java.util.Date ??

Если вы ослабите это ограничение и разрешите использовать Joda Time - API даты и времени Java , вы можете выполнить свою задачу так:

import org.joda.time.DateTime;
import org.joda.time.Period;

import static java.lang.System.out;

public class App {
  public static void main(String[] args) {
    final DateTime now = new DateTime();
    out.println(new Period(now.minusYears(2), now).getYears());
    out.println(new Period(now.minusYears(2).plusHours(1), now).getYears());
  }
}

Выходной результат:

2
1

Если вы не можете использовать Время Joda , используйте java.util.Calendar .

0 голосов
/ 19 июня 2009

Полагаю, поскольку этот вопрос помечен как GWT, что вы пытаетесь сделать дату по математике в GWT-приложение. Библиотека эмуляции GWT реализует устаревшую функцию Date.getYear (), и в этом случае вы можете просто выполнить date2.getYear () - date1.getYear ().

Использование устаревших функций не является лучшим, но, по-видимому, является обычной практикой в ​​мире разработки GWT.

0 голосов
/ 14 ноября 2008

Используйте метод getTime для каждого объекта Date и выполните вычитание. Преобразовать результат в годы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...