Неоднозначный результат даты Ява - PullRequest
1 голос
/ 19 марта 2012

Я получаю странный результат:

Сначала я получаю текущую дату, используя GregorianCalendar:

GregorianCalendar g = new GregorianCalendar();
int m = g.get(Calendar.DAY_OF_MONTH);
int d = g.get(Calendar.DAY_OF_WEEK);
int y = g.get(Calendar.YEAR);

Затем я создаю новый объект Date:

Date d = new Date(d,m,y);

Затем я печатаю их вместе таким образом:

System.out.println(d+" - "+m+" - "+y+" - "+d);

и я получаю:

1 - 18 - 2012 - Thu Jan 02 00:00:00 CET 1908

Вы можете объяснить мне, почему? для устаревшего метода Date(day,mouth,year)? если да, как я могу сравнить две даты, используя эти параметры?

Ответы [ 3 ]

2 голосов
/ 19 марта 2012

Затем я создаю новый объект. Дата:

Date d = new Date(d,m,y);

Порядок аргументов конструктора: year, month, date, больше ничего.

С документация :

Date(int year, int month, int day)

1020 *
*

как я могу сравнить две даты, используя эти параметры?

Зависит от как вы хотите сравнить два Date с. Если вы просто хотите выяснить, что на первом месте, вы можете использовать Date.before и Date.after.

Но, как вы заметили, класс Date устарел . Вместо этого используйте класс Calendar (или, что еще лучше, библиотеку Joda Time )

1 голос
/ 19 марта 2012

Если вам нужно получить новый Date объект из GregorianCalendar, сделайте следующее:

Date d = g.getTime();

Таким образом, вам не придется использовать устаревшие методы, и результат будетбудь тем, кого ты ожидаешь.Кроме того, если вам нужно получить текущую дату, просто напишите new Date(), вам не нужно GregorianCalendar.

Что касается сравнения дат, вы можете использовать Date 'compareTo(),after() и before() методы.Опять же, нет необходимости в GregorianCalendar.

0 голосов
/ 19 марта 2012

Создайте календарь, затем установите время, используя объект Date, затем вы можете получить из него любую необходимую информацию.

Пример:

Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
int day = cal.get(Calendar.DAY_OF_MONTH);
// and so on....
...