Как добавить часть времени в Android

#android #date #time

#Android #Дата #время

Вопрос:

У меня есть код, возвращающий мне строку (ЧЧ: мм).

 SimpleDateFormat curFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
        java.util.Date dateObj;
        try {
            dateObj = curFormater.parse(start);

            SimpleDateFormat postFormater = new SimpleDateFormat("HH:mm"); 
            String newDateStr = postFormater.format(dateObj); 
            startView.setText(newDateStr);
            Emission_start = newDateStr;
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            Log.d(" * Error", e.toString());
        }
  

Это отлично работает… Но прямо сейчас я хотел бы:

  1. добавьте x (предоставляется динамически) минут (x = от 5 до 1000 минут) и преобразуйте во время (примерное время: 3:45, добавьте 25 минут, преобразуйте во время 4: 10)
  2. Получите текущее время и вычислите разницу между текущим временем и временем из шага 1 (4: 10)
  3. Получите разницу во времени (начиная с шага 2) за считанные минуты!

Спасибо за вашу помощь!

Ответ №1:

Я не тестировал, но что-то вроде этого должно сработать:

  1. long newDate = dateObj.getTime()
    (x * 60 * 1000)

  2. long diff =
    System.currentTimeMillis() - newDate

  3. double diffInMins = diff / (60.0 * 1000.0)

Комментарии:

1. Что-то подобное я уже пробовал.. (Я тоже пробовал это), и результат неверный… Но я понятия не имею, почему…

2. После некоторого теста я обнаружил, что пункт 3. или 2. неверен… Новая дата в порядке…

3. Wups… это связано с ошибкой эмулятора… Публикуем неправильное текущее время.. исправлено! Спасибо за помощь!

Ответ №2:

  1. используйте календарь

    Calendar calInstance = новый GregorianCalendar(); calInstance.setTime(dateObj);

Затем добавьте любой фрагмент, который вы хотите, в течение нескольких минут

 calInstance.add(Calendar.MINUTE, XX)
  

Для преобразования используйте свой форматировщик

 postFormatter.format(calInstance.getTime());
  
  1. это тривиально

  2. Разницу в минутах также можно легко вычислить

    большая разница в минутах = (currTimeInMillis — calInstance.getTimeInMillis())/(1000 * 60);