首页 > 解决方案 > 不同的日期返回相同的天数

问题描述

我在我的新 Java 项目中使用日期转换器,我正在计算两天之间的差异,以便在两天之间进行转换。其他一切工作正常,但我遇到了一个问题:

private long daysBetween(Calendar startDate, Calendar endDate) {
    Calendar date = (Calendar) startDate.clone();
    long daysBetween = 0;
    while (date.before(endDate)) {
        date.add(Calendar.DAY_OF_MONTH, 1);
        daysBetween++;
    }
    Log.e("Days Between check",daysBetween + "This is the days difference");
    return daysBetween;
}

这是我计算两个日期之间天数的函数。日期是从微调器中选择的,我记录了这些值以检查它们。它在 2018/03/31 和 2018/4/1 之前给出了真实的输出,从该函数产生相同的天数。

这是我的其他功能(如果需要):

convertToNepali.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        Calendar currentEngDate = new GregorianCalendar();
        int engYear = startingEngYearForSelection;
        int engMonth = startingEngMonthForSelection;
        int engDay = startingEngDayForSelection;

        if(yearEngSpinner.getSelectedItem()!=null)
        {
            engYear = Integer.parseInt(yearEngSpinner.getSelectedItem().toString());
        }

        if(monthEngSpinner.getSelectedItem()!=null)
        {
            Date date = null;
            Log.e("monthSpinner","I am in month spinner");
            try {
                date = new SimpleDateFormat("MMMM").parse(monthEngSpinner.getSelectedItem().toString());
                Calendar cal = Calendar.getInstance();
                cal.setTime(date);

                engMonth = Integer.parseInt(String.valueOf(cal.get(Calendar.MONTH)+1));

            } catch (ParseException e) {
                e.printStackTrace();
                engMonth = 1;
                Log.e("Error Some Error", e.getMessage());
            }

        }

        if(dayEngSpinner.getSelectedItem()!=null)
        {
            engDay = Integer.parseInt(dayEngSpinner.getSelectedItem().toString());
        }

        currentEngDate.set(engYear, engMonth, engDay);

        Calendar baseEngDate = new GregorianCalendar();

        baseEngDate.set(startingEngYearForSelection, startingEngMonthForSelection, startingEngDayForSelection);

        long totalEngDaysCount = daysBetween(baseEngDate, currentEngDate);

        String textOfNepaliVersion = convertToNepaliFunction(totalEngDaysCount);

        dateConvertedTextView.setText(textOfNepaliVersion);

    }



});

标签: android

解决方案


推荐阅读