добавление дней к дате - PullRequest
       23

добавление дней к дате

9 голосов
/ 13 сентября 2009

У меня есть программа, которую нужно запустить 01.01.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.
}

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

Ответы [ 2 ]

18 голосов
/ 13 сентября 2009

Объект 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

Что нужно учитывать, так это то, чем на самом деле является * 1045.

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

1 голос
/ 13 сентября 2009

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

...