Как заменить getDate() из типа Date, который устарел?

У меня есть существующая программа, которую я должен исправить. Он содержит такие строки:

        Date startDate = new Date();
        int day = startDate.getDate() - 1;

но getDate() из типа Date устарел, поэтому я должен изменить его с помощью Calender. Я пробовал это:

Calendar startDate = Calendar.getInstance();
startDate.add(Calendar.DATE, -1);
int day= startDate.getTime();

но это приводит к следующей ошибке:

Несоответствие типов: невозможно преобразовать Date в int


person Yuri    schedule 21.09.2015    source источник


Ответы (10)


Если вы хотите получить день в месяце, используйте это:

int day= startDate.get(Calendar.DAY_OF_MONTH);

Если вы хотите получить день недели, используйте это:

int day= startDate.get(Calendar.DAY_OF_WEEK);

Также будьте осторожны с днем ​​недели, потому что день 0 — это воскресенье, а не понедельник.

Номер поля для получения и установки с указанием дня недели. Это поле принимает значения ВОСКРЕСЕНЬЕ, ПОНЕДЕЛЬНИК, ВТОРНИК, СРЕДА, ЧЕТВЕРГ, ПЯТНИЦА и СУББОТА.

person Jure    schedule 21.09.2015
comment
похоже, что класс Calender не поддерживается GWT. Я получил эту ошибку при компиляции: нет исходного кода для типа java.util.Calendar; вы забыли наследовать необходимый модуль? - person Yuri; 21.09.2015
comment
Я не заметил, что вы используете GWT. Я не знаком с GWT, но проверьте этот ответ: stackoverflow.com/questions/7009655/ - person Jure; 21.09.2015

Еще один хороший вариант - использовать как:

System.out.println(DateFormat.getDateInstance().format(new Date()));

Он напечатает текущую дату.

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

System.out.println(DateFormat.getDateTimeInstance().format(new Date()));
person FullStack    schedule 21.09.2015

Несоответствие типов: невозможно преобразовать Date в int

изменять

  int day= startDate.getTime();

to

 Date dat= startDate.getTime();//return type Date
person SatyaTNV    schedule 21.09.2015

Как предлагают javadocs, используйте Calendar.get(Calendar.DAY_OF_MONTH)

person ennovation    schedule 21.09.2015

Чтобы получить день месяца:

int day= startDate.get(Calendar.DAY_OF_MONTH);

Из Javadocs:

Номер поля для получения и установки, указывающий день месяца. Это синоним слова ДАТА. Первый день месяца имеет значение 1.

person Rahul Tripathi    schedule 21.09.2015

Функция getTime() вернет объект даты, который нельзя преобразовать в тип int. Если вы хотите получить день как целое число, вы должны использовать:

int day = startDate.get(Calendar.DATE)
person Daniel Pflüger    schedule 21.09.2015

В Date#startDate.getDate() возвращает день месяца:

  • Код №1 -->

    Date startDate = new Date();
    int day = startDate.getDate() - 1;
    System.out.println(day); 
    

Через Calendar#.get(Calendar.DAY_OF_MONTH) вы получите тот же результат, что и Date#startDate.getDate():

  • Код#2 -->

    Calendar startDate = Calendar.getInstance();
    int day= startDate.get(Calendar.DAY_OF_MONTH)-1;
    System.out.println(day);
    

Таким образом, вы можете заменить код № 1 на код № 2.

person Shekhar Khairnar    schedule 21.09.2015
comment
похоже, что класс Calender не поддерживается GWT. - person Yuri; 21.09.2015

См. документацию по Java по адресу http://docs.oracle.com/javase/7/docs/api/java/util/Date.html#getTime():

Date объект метода getTime() возвращает long не в int поэтому используйте как:

long time = startDate.getTime();

Для Calendar документов http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#getTime() Используйте, как показано ниже:

long time = startDate.getTime().getTime();

Для дня месяца:

Calendar c = Calendar.getInstance();
int dayOfMonth = c.get(Calendar.DATE);
person Bhuwan Prasad Upadhyay    schedule 21.09.2015

Java.время

Общеизвестно, что старые классы java.util.Date/.Calendar доставляют много хлопот. Они были вытеснены в Java 8 и более поздних версиях новой структурой java.time.

Обратите внимание на использование часового пояса. Решающее значение при определении даты. Если этот параметр опущен, вы неявно полагаетесь на текущий часовой пояс JVM по умолчанию. Лучше указать желаемый/ожидаемый часовой пояс.

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime now = ZonedDateTime.now( zoneId );
int dayOfMonth = now.getDayOfMonth();
int dayOfWeek = now.getDayOfWeek().getValue();
int dayOfYear = now.getDayOfYear();
person Basil Bourque    schedule 21.09.2015

Просто введите int day = startDate.get(Calendar.DAY_OF_WEEK);

person Dilip Soni    schedule 21.09.2015