Вопрос

У меня есть программа, которая должна начаться 1/1/09, и когда я начну новый день, моя программа покажет следующий день.Это то, что у меня есть на данный момент:

GregorianCalendar startDate = new GregorianCalendar(2009, Calendar.JANUARY, 1);
SimpleDateFormat sdf = new SimpleDateFormat("d/M/yyyy"); 
public void setStart()
{
    startDate.setLenient(false);
    System.out.println(sdf.format(startDate.getTime()));
}

public void today()
{
    newDay = startDate.add(5, 1);
    System.out.println(newDay);
//I want to add a day to the start day and when I start another new day, I want to add another day to that.
}

Я получаю сообщение об ошибке found void, но ожидаемый int, в 'NewDay = StartDate.add(5, 1);' Что мне делать?

Это было полезно?

Решение

Тот Самый Calendar объект имеет add метод, который позволяет добавлять или вычитать значения указанного поля.

Например,

Calendar c = new GregorianCalendar(2009, Calendar.JANUARY, 1);
c.add(Calendar.DAY_OF_MONTH, 1);

Константы для указания поля можно найти в "Сводке полей" Calendar класс.

Просто для дальнейшего использования, Спецификация Java API содержит много полезной информации о том, как использовать классы, которые являются частью Java API.


Обновить:

Я получаю сообщение об ошибке найдено недействительным, но ожидаемый int в 'NewDay = StartDate.add(5, 1);' Что мне делать?

Тот Самый add метод ничего не возвращает, поэтому пытается присвоить результат вызова Calendar.add недействителен.

Ошибка компилятора указывает на то, что кто-то пытается назначить void к переменной с типом int.Это недопустимо, так как нельзя присвоить "ничего" объекту int переменная.

Просто предположение, но, возможно, это и есть то, чего пытаются достичь:

// Get a calendar which is set to a specified date.
Calendar calendar = new GregorianCalendar(2009, Calendar.JANUARY, 1);

// Get the current date representation of the calendar.
Date startDate = calendar.getTime();

// Increment the calendar's date by 1 day.
calendar.add(Calendar.DAY_OF_MONTH, 1);

// Get the current date representation of the calendar.
Date endDate = calendar.getTime();

System.out.println(startDate);
System.out.println(endDate);

Выходной сигнал:

Thu Jan 01 00:00:00 PST 2009
Fri Jan 02 00:00:00 PST 2009

Что необходимо учитывать, так это то, что Calendar на самом деле так и есть.

A Calendar это не представление даты.Это представление календаря и того, на что он в данный момент указывает.Чтобы получить представление о том, на что указывает календарь в данный момент, необходимо получить Date из самого Calendar используя getTime способ.

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top