我在android项目中遇到了一个奇怪的问题。我正在尝试将日期转换为其他日期,为此,我正在计算两个日期之间的天数。因此,以下是我如何实现的。
Calendar baseEngDate = new GregorianCalendar();
Calendar currentEngDate= new GregorianCalendar();
baseEngDate.set(startingEngYearForSelection, startingEngMonthForSelection, startingEngDayForSelection);
currentEngDate.set(engYear, engMonth, engDay);
long totalEngDaysCount = daysBetween(baseEngDate, currentEngDate);
这是我的baseEngDate日历。设置方法有3个参数,这些参数具有以下参数,其默认值为:
int startingEngYearForSelection = 1944;
int startingEngMonthForSelection = 1;
int startingEngDayForSelection = 1;
但是,当我试图在这个函数中检查它们的值时,
private long daysBetween(Calendar startDate, Calendar endDate) {
SimpleDateFormat myFormat = new SimpleDateFormat("dd MM yyyy");
String inputString1 = null;
String inputString2 = null;
Date date1 = startDate.getTime();
Date date2 = endDate.getTime();
inputString1 = myFormat.format(date1);
inputString2 = myFormat.format(date2);
Log.e("String", inputString1);
.
.
.
}
我在日志中得到了这个值,这不是我所期望的:
2018-11-14 13:55:29.982 15712-15712/com.utilnepal E/String: 01 02 1944
它本应于1944年1月1日归还我,但它于1994年2月1日返回。为什么?
应用此项并以所需格式获取日期:
In Java Calender January is 0 and others so on increment 1
startingEngMonthForSelection将为0而不是1;
int startingEngYearForSelection = 1944;
int startingEngMonthForSelection = 0;
int startingEngDayForSelection = 1;
long diff = endDate.getTimeInMillis() - startDate.getTimeInMillis();
SimpleDateFormat myFormat = new SimpleDateFormat("dd MM yyyy");
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(diff);
String date=formatter.format(calendar.getTime());