2012-03-18 4 views
1

Я получение странный результат:Неоднозначный результат дата ява

Сначала я получить текущую дату, используя 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)? если да, то как я могу сравнить две даты с использованием этих параметров?

+2

'Дата d = новые Дата (д, т, у);'? Нет, я так не думаю. – skaffman

ответ

2

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

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

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

От the documentation:

Date(int year, int month, int day)


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

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

Но, как вы уже отметили, класс Date является устаревшим. Используйте Calendar класс вместо (или, еще лучше, в Joda Time library)

+0

спасибо вам! это была моя ошибка :) – JackTurky

1

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

Date d = g.getTime(); 

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

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

0

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

Пример:

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

Если ваш язык использует григорианский календарь, Calendar.getInstance() вернет экземпляр GregorianCalendar ... если вы не уверены, просто сделайте Calendar cal = new GregorianCalendar(); Вы можете даже сделать новый GregorianCalendar (год, месяц, день), а затем получить объект Date, вызвав метод Calendar getTime(). – Renato