2015-09-09 3 views
0
public String timeDifference(String startTime, String leavedTime) { 
     SimpleDateFormat format = new SimpleDateFormat("HH:mm"); 
     Date date1; 
     String dd =null; 

     try { 
      date1 = format.parse(startTime); 
      Date date2 = format.parse(leavedTime); 
     long difference = date2.getTime() - date1.getTime(); 
     long diffMinutes = difference/(60 * 1000) % 60; 
     long diffHours = difference/(60 * 60 * 1000) % 24; 

     dd=diffHours + " : " + diffMinutes ; 



     } catch (ParseException ex) { 
      System.out.println(ex); 
     } 
     return dd; 
    } 

Я хочу знать, о,объяснение о преобразовании миллисекунды до нескольких минут

1)long diffMinutes = difference/(60 * 1000) % 60; 
    2)   long diffHours = difference/(60 * 60 * 1000) % 24 

какова цель использования% 60 в коде 1 какова цель использования% 24 в коде 2

может кто-нибудь дать мне ясное объяснение, пожалуйста, я борюсь с этим в течение нескольких часов

+0

Знаете ли вы, что такое '%' и делает? –

+0

Знаете ли вы, что приоритет операторов и ассоциативность говорят о порядке оценки этих выражений? –

+0

Вы пытались вытащить '% 60' и'% 24', чтобы увидеть, как это влияет на выход? –

ответ

1

Оператор % - это модуль. В этом коде diffMinutes будет числом минут в течение часа разницы во времени, а diffHours будет числом часов в пределах разницы во времени.

Разделение на (60 * 1000) преобразует первоначальную разницу в миллисекундах в единицы минут (разделите на 1000, чтобы получить секунды, затем на 60, чтобы получить минуты).

Например, если разница во времени составляет 2 дня 3 часа и 52 минут, diffMinutes будет 52 и diffHours будет 3.

Без модуля, результат изменяется от «количество минут в пределах час «до» общего количества прошедших минут ». Например, прошедшие 133 минуты (без модуля) становятся «13 минутами в течение часа» с модулем.

+0

, что вы упомянули, я уже знаю, что мне нужно знать, это разница/(60 * 1000)% 60; в этом заявлении после преобразования разницы в миллисекундах в единицы минут, то в чем цель использования% 60 здесь. то, что мы хотим, уже получено этим следующим утверждением, не так ли (разность/(60 * 1000)) (Imean без модуля) –

Смежные вопросы