Как добавить 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();
Ответ 7
Если вы используете java 8, вы можете использовать новое время даты api http://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html#plusWeeks-long-
Если вы используете java 7 или более старую версию java, вы должны использовать старый api http://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html#add-int-int-