我有问题。我使用此代码来“增加”或“减少”一天。 “价值”是1 or -1
。我试过了c.add(Calendar.DAY_OF_MONTH, value);
和c.add(Calendar.DATE, value);
问题是:
如果value = 1
,increases
天 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);
答案 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