@justxz

Где допущена ошибка в сравнении дат?

Я выбираю дату в DateRangePicker, после этого через свой класс DateCutter разделяю строку даты на дату начала и конца, перевожу в миллисекунды. Потом сравниваю первую дату с сегодняшней датой и в зависимости от того равны эти даты или нет я распределяю элементы между таблицами базы данных.
Думаю, что проблема в сравнении, т.к. никаких ошибок нет, просто ничего никуда не добавляется.

AddElement.java(основное активити)
public class AddElement extends AppCompatActivity {

private DBHelper dbHelper;
private ArrayList<String> subtasks;
private SubtasksAdapter adapter;
private RecyclerView recyclerView;
private TextView tvDate;
private Long today, firstDate, secondDate;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_element);
    tvDate = findViewById(R.id.date);

    //Установление даты на текствью датапикера
    Date currentDate = new Date();
    DateFormat formatter = new SimpleDateFormat("dd MMM", Locale.getDefault());
    tvDate.setText(formatter.format(currentDate) + " - " + formatter.format(currentDate));

    //Сегодняшняя дата
    today = MaterialDatePicker.todayInUtcMilliseconds();

    androidx.core.util.Pair<Long, Long> selection = new androidx.core.util.Pair<>(today, today);

    CalendarConstraints.Builder constraintBuilder = new CalendarConstraints.Builder();
    constraintBuilder.setValidator(DateValidatorPointForward.now());

    MaterialDatePicker.Builder<androidx.core.util.Pair<Long, Long>> builder = MaterialDatePicker.Builder.dateRangePicker();
    builder.setSelection(selection);
    builder.setCalendarConstraints(constraintBuilder.build());

    final MaterialDatePicker materialDatePicker = builder.build();

    //Открытие датапикера
    tvDate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            materialDatePicker.show(getSupportFragmentManager(), "TAG");
        }
    });

    //Получение данных из датапикера
    materialDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener() {
        @Override
        public void onPositiveButtonClick(Object selection) {
            tvDate.setText(materialDatePicker.getHeaderText());

            DateCutter dateCutter = new DateCutter(materialDatePicker.getHeaderText());
            try {
                firstDate = dateCutter.getFirst();
            } catch (ParseException e) {
                e.printStackTrace();
            }
            try {
                secondDate = dateCutter.getSecond();
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
    });

    dbHelper = new DBHelper(this);
}

//Добавление данных в бд
public void imageButtonOnClick(View view) {

    TextView tvTask = findViewById(R.id.task);
    TextView tvComment = findViewById(R.id.comment);

    String task = tvTask.getText().toString();
    String comment = tvComment.getText().toString();
    String time = tvDate.getText().toString();
    ArrayList<String> subtasks = adapter.getElements();

    if (!task.equals("")) {
        if (firstDate.equals(today))
            dbHelper.addTableHome(new Items(null, task, comment, time, null));
        else
            dbHelper.addTablePlanned(new Items(null, task, comment, time, null));
    }

    finish();
}


DateCutter.java(мой класс)
public class DateCutter {
ArrayList<Long> list;
String headerText;

public DateCutter(@NonNull String headerText) {
    this.headerText = headerText;
}

//Получение даты начала
public Long getFirst() throws ParseException {
    String firstDateST = new String(headerText.substring(0, 6));
    Date firstDate;
    SimpleDateFormat formatter = new SimpleDateFormat("dd MMM");
    firstDate = formatter.parse(firstDateST);

    return firstDate.getTime();
}

//Дата конца
public Long getSecond() throws ParseException {
    String secondDateST = new String(headerText.substring(10, 16));
    Date secondDate;
    SimpleDateFormat formatter = new SimpleDateFormat("dd MMM");
    secondDate = formatter.parse(secondDateST);

    return secondDate.getTime();
}
  • Вопрос задан
  • 28 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
S2 | CRM Тольятти
от 120 000 до 200 000 ₽
Oblako Studio Санкт-Петербург
от 120 000 до 240 000 ₽
Gaskar Group Москва
от 120 000 ₽