2016-07-01 4 views
0

Я работаю над приложением, которое вычисляет разницу во времени и иметь это действительно странную проблему, эмулятор и устройство дают разные результаты.Emulator и устройства дают разные результаты

Если время установлено 22:00 в 22:45 на emaulator разница . Когда я делаю то же самое, когда я бегу на устройства я получаю

Спасибо.

ОБНОВЛЕНИЕ

Вот код, как рассчитать часы/мин

public int theTimeMachineHours(EditText a, EditText b) throws Exception{ 
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm"); 
    Date startDate = simpleDateFormat.parse(a.getText().toString()); 
    Date endDate = simpleDateFormat.parse(b.getText().toString()); 

    long difference = endDate.getTime() - startDate.getTime(); 
    if(difference<0) 
    { 
     Date dateMax = simpleDateFormat.parse("24:00"); 
     Date dateMin = simpleDateFormat.parse("00:00"); 
     difference=(dateMax.getTime() -startDate.getTime())+(endDate.getTime()-dateMin.getTime()); 
    } 
    int days = (int) (difference/(1000*60*60*24)); 
    int hours = (int) ((difference - (1000*60*60*24*days))/(1000*60*60)); 
    int min = (int) (difference - (1000*60*60*24*days) - (1000*60*60*hours))/(1000*60); 

    return hours; 
} 

ОБНОВЛЕНИЕ 2

Здесь код из одной части в коде, где метод Timemachine является :

if(restFrom2Day1.length()!=0){ 
     sendBreakHour2Day1 = ""+theTimeMachineHours(restFrom2Day1,restTo2Day1); 
     sendBreakMin2Day1 = ""+theTimeMachineMin(restFrom2Day1,restTo2Day1); 
     hour2Day1 = Integer.parseInt(sendBreakHour2Day1); 
     minute2Day1 = Integer.parseInt(sendBreakMin2Day1); 
    } 
+0

Можете ли вы предоставить часть своего кода, чтобы определить разницу во времени? – babadaba

+0

@babadaba Я добавил код сейчас. – mogren3000

ответ

0

Я считаю, что вы находитесь в зоне DST (летнее время), верно?

Таким образом, ваше устройство может маркировать 23:00 (а не 22:00).

Возможно, вы устанавливаете календарь на 22:00. Однако, поскольку DST активен, ваше время фактически 23:00 (флаг 22:00 + DST). Так, может быть, именно поэтому вы получаете 15, а не 45 минут.

+0

Хорошо. Как отключить это. – mogren3000

+0

Поделитесь больше кода в своем вопросе .. просто чтобы узнать, как вы устанавливаете время/календарь и т. Д. – W0rmH0le

+0

Проверить обновление с кодом – mogren3000

0

Вызывает ли это другие результаты для вас?

public long theTimeMachineHours(EditText a, EditText b) throws Exception{ 
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm", Locale.ENGLISH); 
    Date startDate = simpleDateFormat.parse(a.getText().toString()); 
    Date endDate = simpleDateFormat.parse(b.getText().toString()); 


    long different = endDate.getTime() - startDate.getTime(); 

    long minutesInMilli = 1000 * 60; 
    long hoursInMilli = minutesInMilli * 60; 

    long hours = different % (hoursInMilli * 24)/hoursInMilli; 
    long minutes = different % hoursInMilli/minutesInMilli; 

    return hours; 
} 
+0

Вы можете указать часы в int, если необходимо – babadaba

+0

Это не решило проблему. – mogren3000

+0

Что вы набираете в своих EditTexts? – babadaba