Android:日历添加天数,包括月份和年份

时间:2015-11-28 11:44:47

标签: android date calendar

我有问题。我使用此代码来“增加”或“减少”一天。 “价值”是1 or -1。我试过了c.add(Calendar.DAY_OF_MONTH, value);c.add(Calendar.DATE, value);问题是: 如果value = 1increases 1 ,则月份和年份不会让步并保持不变。

如果value = -1,则decreases 1 30 days之后会减少year

我已经尝试了一切,但无法理解这种行为。我需要像MYSQ L那样增加或减少整个日期,而不仅仅是日期,月份或年份。

SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy");
Calendar c = Calendar.getInstance();

try {
    c.setTime(sdf.parse(mDate));
} catch (ParseException e) {
    e.printStackTrace();
}

c.add(Calendar.DAY_OF_MONTH, value);
sdf = new SimpleDateFormat("dd/mm/yyyy");
Date resultdate = new Date(c.getTimeInMillis());
String newDtString = sdf.format(resultdate);

1 个答案:

答案 0 :(得分:0)

你可以尝试

calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + value);

您还必须在年度的第一天或最后一天处理最终案件

Java为您处理此问题。例如:

Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy");
calendar.setTimeZone(TimeZone.getDefault());

try {
    calendar.setTime(sdf.parse("31 December 2015"));
} catch (ParseException e̋̋) { }
System.out.println(sdf.format(calendar.getTime()));
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
System.out.println(sdf.format(calendar.getTime()));

打印:

31 December 2015
01 January 2016