Как добавить 2 недели к дате в java?

Я получаю дату от объекта в момент создания экземпляра, и для вывода мне нужно добавить 2 недели к этой дате. Мне интересно, как я буду добавлять к нему, а также будет ли мой синтаксис верным в настоящее время.

Текущая Java:

private final DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
private Date dateOfOrder;

private void setDateOfOrder()
{
    //Get current date time with Date()
    dateOfOrder = new Date();      
}

public Date getDateOfOrder()
{
    return dateOfOrder;
}

Правильно ли этот синтаксис? Кроме того, я хочу создать getter, который возвращает приблизительную дату доставки, которая составляет 14 дней после даты заказа, я не уверен, как добавить и вычесть из текущей даты.

Ответ 1

Используйте Календарь и установите текущее время, а затем пользователь - метод добавления календаря

попробуйте следующее:

int noOfDays = 14; //i.e two weeks
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateOfOrder);            
calendar.add(Calendar.DAY_OF_YEAR, noOfDays);
Date date = calendar.getTime();

Ответ 2

Я покажу вам, как мы можем это сделать в Java 8. Вот вы:

public class DemoDate {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        System.out.println("Current date: " + today);

        //add 2 week to the current date
        LocalDate next2Week = today.plus(2, ChronoUnit.WEEKS);
        System.out.println("Next week: " + next2Week);
    }
}

Выход:

Current date: 2016-08-15
Next week: 2016-08-29

Скалы Java 8!!

Ответ 3

Использовать Календарь

    Date date = ...
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    c.add(Calendar.WEEK_OF_MONTH, 2);
    date = c.getTime();

Ответ 4

Попробуйте добавить две недели.

long date = System.currentTimeMillis() + 14 * 24 * 3600 * 1000;
Date newDate = new Date(date);

Ответ 5

если передать 14 этому методу addDate, он добавит 14 к текущей дате и вернет

public String addDate(int days) throws Exception {
    final DateFormat dateFormat1 = new SimpleDateFormat(
            "yyyy/MM/dd HH:mm:ss");
    Calendar c = Calendar.getInstance();
    c.setTime(new Date()); // Now use today date.
    c.add(Calendar.DATE, addDays); // Adding 5 days
    return dateFormat1.format(c.getTime());
}

Ответ 6

Использование библиотеки Joda-Time будет проще и будет обрабатывать летнее время, другие аномалии и часовые пояса.

java.util.Date date = new DateTime( DateTimeZone.forID( "America/Denver" ) ).plusWeeks( 2 ).withTimeAtStartOfDay().toDate();