Оператор if else для DateUtils

  1. Итак, перед этим я уже получаю разницу во времени между двумя временами.
  2. Теперь я хочу отобразить точку, которая будет взиматься за определенный период времени, например: в моем коде продолжительность времени, названная diffResult, если diffResult меньше 30 минут, то балл будет начислен умноженным на 1 diffResult = 2, поэтому 2 * 1, будет начислено 2 балла.
  3. Я хотел использовать оператор if else, но получил несколько ошибок. Вот мой код

    pointChargeBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
    
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm a");
            Date date1 = null;
            try {
                date1 = simpleDateFormat.parse(timeResult.getText().toString());
            } catch (ParseException e) {
                e.printStackTrace();
            }
            Date date2 = null;
            try {
                date2 = simpleDateFormat.parse(timeResult2.getText().toString());
            } catch (ParseException e) {
                e.printStackTrace();
            }
            String diffResult= DateUtils.getRelativeTimeSpanString(date1.getTime(), date2.getTime(), DateUtils.MINUTE_IN_MILLIS).toString();
    
            if (diffResult < 30){
    
                int point = diffResult * 2;
                pointChargeBtn.setText(point);
            }
    
    
        }
    });
    

сообщайте, с какими ошибками вы сталкиваетесь? и что пользователь может ввести? время или дату? какой формат?

Janvi Vyas 01.05.2018 11:38

В вашем коде diffResult - это строка. Оператор '<' нельзя применить к строке.

will 01.05.2018 11:54

поскольку diffResult является строкой, поэтому нельзя сравнивать с целым числом в операторе if. Кнопка для отображения времени. Формат: SimpleDateFormat и MINUTES_IN_MILLIS @Janvi Vyas.

Nor Sakinah 02.05.2018 08:54

мне нужно преобразовать diffResult из строки в целое число? @будут

Nor Sakinah 02.05.2018 08:56

@NorSakinah вы можете получить часы из diffResult следующим образом: diffResult.split ("") [0], чем преобразовать его в Integer, например: new Integer (diffResult.split ("") [0]). Теперь у вас есть часы как int и вы можете сравнить их, как вы это делаете выше

will 02.05.2018 09:30
0
5
51
1

Ответы 1

Ваша ошибка:

 String diffResult= DateUtils.getRelativeTimeSpanString(date1.getTime(), date2.getTime(), DateUtils.MINUTE_IN_MILLIS).toString();

        if (diffResult < 30){

            int point = diffResult * 2;
            pointChargeBtn.setText(point);
        }

diffResult - это String, поэтому вы не можете сравнивать его с числом и не умножать.

РЕДАКТИРОВАТЬ

Исправить можно так:

// difference in milliseconds
// Using Math.abs is optional. It allows us to not care about which date is the latest.
int diffInMillis = Math.abs(date2.getTime() - date1.getTime()); 

// Calculates the time in minutes
int diffInMinutes = diffInMillis / (1000 * 60);

// if difference is less (strictly) than 30 minutes
if (diffInMinutes < 30){
    // TODO: Do something
}

Как я могу это исправить?

Nor Sakinah 02.05.2018 05:28

Но вы знаете, что ваше приложение выйдет из строя, если возникнет ошибка синтаксического анализа? Вы должны проверить, не являются ли обе даты не null, и сделать что-нибудь, если это так (например, отобразить сообщение об ошибке для пользователя), прежде чем пытаться вычислить разницу во времени.

Eselfar 02.05.2018 10:07

Другие вопросы по теме