This app calculates which week of the semester the selected date is. It works fine. But I need to add more functionality.
I picked 27th jan 2023 and I need to calculate amount of days passed to it from any chosen date. How to I execute this? Any tips and examples would be really helpful.
I know I need a loop to execute this, but I have no idea.
I have only my main page code:
package kz.talipovsn.calendar;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.CalendarView;
import android.widget.EditText;
import android.widget.Toast;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class MainActivity extends AppCompatActivity {
    final int maxSemesterWeek = 15; 
    final SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy, EEEE"); 
    final Calendar calendar = Calendar.getInstance();
    SharedPreferences sp; 
    CalendarView cal;  
    EditText editText; 
    boolean offsetNumerator; 
    int displacementWeekSemester; 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        sp = PreferenceManager.getDefaultSharedPreferences(this);
        editText = findViewById(R.id.editText);
        cal = findViewById(R.id.calendarView);
        cal.setFirstDayOfWeek(2); 
        calendar.setFirstDayOfWeek(Calendar.MONDAY); 
        readSettings(); 
        cal.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
            @Override
            public void onSelectedDayChange(CalendarView view, int year, int month,
                                            int dayOfMonth) {
                calendar.set(year, month, dayOfMonth);
                editText.setText(doCalc());
            }
        });
    }
    private void readSettings() {
        offsetNumerator = sp.getBoolean("offsetNumerator", false);
        displacementWeekSemester = Integer.valueOf(sp.getString("displacementWeekSemester", "1")) - 1;
        int fontSize = Integer.valueOf(sp.getString("fontSize", String.valueOf((getString(R.string.fontSize)))));
        editText.setTextSize(TypedValue.COMPLEX_UNIT_SP, fontSize);
    }
    @Override
    protected void onResume() {
        super.onResume();
        readSettings();
        Date date = new Date();
        cal.setDate(date.getTime());
        calendar.setTime(date);
        editText.setText(doCalc());
    }
    // Even or odd definition
    public static boolean isEven(int x) {
        return (x & 1) == 0;
    }
    // Calculation of week number and is it numerator or denomerator
    public String doCalc() {
        String date = sdf.format(calendar.getTime());
        int semesterWeek = calendar.get(Calendar.WEEK_OF_YEAR) - displacementWeekSemester;
        boolean numerator = isEven(semesterWeek);
        if (offsetNumerator) {
            numerator = !numerator;
        }
        if ((semesterWeek <= 0) || (semesterWeek > maxSemesterWeek)) {
            return getString(R.string.Selected) + date + getString(R.string.This_date_is_not_in_semester);
        } else {
            return getString(R.string.Выбрано) + date + getString(R.string.Week_Semester) + semesterWeek + getString(R.string.Now)
                    + (numerator ? getString(R.string.Numerator) : getString(R.string.Denomerator));
        }
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            Intent intent = new Intent(this, SettingsActivity.class);
            startActivity(intent);
            return true;
        }
        if (id == R.id.about) {
            Toast toast = Toast.makeText(getApplicationContext(), R.string.email, Toast.LENGTH_LONG);
            toast.show();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
